else if(JIN3&&f_jin3==0){
}
else if((JIN3&&f_jin3==0)){
}
上面這條和下面這條,編譯好后,燒進MCU,執行結果居然不一樣,有大神知道為什么嗎?
我比對了兩種寫法編譯后的HEX檔案和LST檔案,沒有發現有什么不一樣的地方,真是太奇怪了。
uj5u.com熱心網友回復:
這兩個寫法完全一樣啊,樓主沒寫錯嗎?uj5u.com熱心網友回復:
== 的優先級比 && 高,語法沒錯,邏輯錯了,另外,比較時將常量(你代碼里的0)放在 == 的左邊是個好習慣,至少不會出現你的問題uj5u.com熱心網友回復:
兩句話的區別是下面句多了個括號,兩句話的運算順序是一樣的。
uj5u.com熱心網友回復:
我知道,如果要他要的確實是 JIN3 為真,且 f_jin3==0 的話,
最好能把 執行結果 貼出來看看
uj5u.com熱心網友回復:
我試了一下,一樣uj5u.com熱心網友回復:
下面一條就是多了一個括號,機器執行的動作就不一樣。編譯出來的代碼完全一樣。
覺得很神奇。
uj5u.com熱心網友回復:
試了一下if(f_jin3==0&&JIN3)和if(JIN3&&f_jin3==0),機器的動作還真的不一樣,太奇怪了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/123262.html
標籤:單片機/工控
