比如有以下表示式
a && b && c
只有a為真(非0)才需要判斷b的值;
只有a和b都為真,才需要判斷c的值。
求最終a、b、c、d的值。
main()
因為a++是先判斷a的值再自加,而a初始值為0, 所以(a++)為假,由短路現象可知&&後面式子b++和--c就都不會執行;
對於賦值語句,是先將a的值賦值給d,然後再自加,所以d的值為0,a最終為1。
執行結果:
比如有以下表示式
a || b || c
只要a為真(非0)就不必判斷b和c;
只有a為假,才需要判斷b的值;
只有a和b都為假,才有必要判斷c的值。
求最終a、b、c、d的值;
main()
因為a++是先判斷a的值再自加,而a初始值為0, 所以(a++)為假,由短路現象可知,還需要繼續判斷 || 後面的表示式b++,b++要先判斷b的值,b為1,所以b++為真,由短路現象可知,後面的式子--c就不在執行;
對於賦值語句,不再是將a的值賦值給d,而是將b先賦值給d然後a和b再自加,所以d的值為1,a最終為1,b最終為2。
執行結果:
C語言中短路求值問題
以下表示式就是短路現象的其中一種 x y z 如果x為假,直接返回假 若x為真,則執行y 只有x和y都為真才執行z。我們來看以下 求想x,y,z和b的值。include include intmain 這裡我們執行到bool b x y z 這條語句時,編譯器會先執行x 因為x 是後置 得等到整條語...
C語言中陣列越界訪問造成死迴圈現象
本篇文章純屬娛樂,沒太多技術性的東西。只是我覺得還比較有意思,所以記一下!大俠請繞道!include int main int argc,char argv printf program is end n return 0 很顯然,在本段 中,出現了乙個越界操作的問題。不過幸運的是,編譯還是通得過的...
回文現象(C語言)
英文中有很多的回文詞,回文詞的拼法十分有趣,無論是從前往後拼讀,還是從後往前拼讀,他們的拼法和詞義都不變。例如 dad 爸爸 mum 媽媽 noon 中午 eve 前夕 eye 眼睛 pop 流行 deed 行為 level 水平 等。簡單地說,回文 就是指順讀和倒讀都一樣的字串。現在請你程式設計輸...