![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 七嘴八舌異言堂
(https://www.pcdvd.com.tw/forumdisplay.php?f=12)
- - 想問個關於程式的問題
(https://www.pcdvd.com.tw/showthread.php?t=1104259)
|
|---|
想問個關於程式的問題
想問一下下面這個程式有沒有可能造成二次觸發
我想在四種狀態下做4種不一樣的事,4種狀態輪流切換 例如: 全域變數 int aa=0 引用:
這樣寫應該不會在一次迴圈中同時觸發兩件事吧??? |
引用:
程式執行的方式是一行一行往下跑,如果有 if else 就只會有兩種狀況 如果你還用了 else if 之類的,就看你有幾種狀況 不然就是完全不會進入邏輯判斷(如果有處理例外就是會跳到例外去) 他不會因為你設定了全域變數,因為全域變數的變化,就跳回 if else 的開頭,這違反程式是一行一行執行下去的原則 |
引用:
應該是C語法,邏輯測試中的 = 應該是 == 。 語法可以改為 switch case 比較簡潔,只要每個 case scope多個break,就不會有重複執行的疑慮。 |
不會..... 補滿十個字
|
感謝,後來發現是別的地方寫錯
對吼,我都忘了分類可以用switch case ,我還一個一個用IF分類 |
當然會 特別是你用全域
呼叫端如果是multi thread 你這邊沒有lock 如global lock 兩個thread 之間的同步沒弄好 肯定中 |
引用:
用一行計算式可做的為何要寫這麼長? |
引用:
好奇,怎樣寫成一行?? |
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 那就不能像上面這樣 |
引用:
三元運算子 ... 這個請慎用,不是甚麼程式都寫的精簡就是好(深受其害) |
| 所有的時間均為GMT +8。 現在的時間是01:41 AM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2026。