![]() |
||
|
Senior Member
![]() ![]() ![]() 加入日期: Mar 2012 您的住址: 地球
文章: 1,303
|
想問個關於程式的問題
想問一下下面這個程式有沒有可能造成二次觸發
我想在四種狀態下做4種不一樣的事,4種狀態輪流切換 例如: 全域變數 int aa=0 引用:
這樣寫應該不會在一次迴圈中同時觸發兩件事吧??? |
||||||||
|
|
|
*停權中*
加入日期: Jul 2013
文章: 331
|
引用:
程式執行的方式是一行一行往下跑,如果有 if else 就只會有兩種狀況 如果你還用了 else if 之類的,就看你有幾種狀況 不然就是完全不會進入邏輯判斷(如果有處理例外就是會跳到例外去) 他不會因為你設定了全域變數,因為全域變數的變化,就跳回 if else 的開頭,這違反程式是一行一行執行下去的原則 此文章於 2016-05-11 01:52 PM 被 micall.lee 編輯. |
|||
|
|
|
New Member
加入日期: Jul 2011
文章: 3
|
引用:
應該是C語法,邏輯測試中的 = 應該是 == 。 語法可以改為 switch case 比較簡潔,只要每個 case scope多個break,就不會有重複執行的疑慮。 |
|
|
|
|
Advance Member
![]() ![]() 加入日期: Jul 2012 您的住址: 新竹
文章: 409
|
不會..... 補滿十個字
|
|
|
|
Senior Member
![]() ![]() ![]() 加入日期: Mar 2012 您的住址: 地球
文章: 1,303
|
感謝,後來發現是別的地方寫錯
對吼,我都忘了分類可以用switch case ,我還一個一個用IF分類 |
|
|
|
*停權中*
加入日期: Jul 2015
文章: 14
|
當然會 特別是你用全域
呼叫端如果是multi thread 你這邊沒有lock 如global lock 兩個thread 之間的同步沒弄好 肯定中 |
|
|
|
Power Member
![]() ![]() 加入日期: Nov 2006
文章: 560
|
引用:
用一行計算式可做的為何要寫這麼長? |
|
|
|
|
Basic Member
加入日期: Aug 2003 您的住址: 高雄
文章: 27
|
引用:
好奇,怎樣寫成一行??
__________________
身如風,心如雲,遊蕩玩樂天地間∼ |
|
|
|
|
*停權中*
加入日期: Jul 2015
文章: 48
|
if((aa==3) && (某事件1條件成立))
aa=0; else if((aa==2) && (某事件2條件成立)) aa=3; else if((aa==1) && (某事件3條件成立)) aa=2; else if((aa==0) && (某事件4條件成立)) aa=1; 我猜你的aa=0/1/2/3應該是想要讓這數字輪動 所以要分兩個if 那就不能像上面這樣 此文章於 2016-05-12 03:20 AM 被 邪神 編輯. |
|
|
|
*停權中*
加入日期: Jul 2013
文章: 331
|
引用:
三元運算子 ... 這個請慎用,不是甚麼程式都寫的精簡就是好(深受其害) |
|
|
|