c語言基礎問一道題,為什麼x恆等於2,見下圖?
作者:由 不太好開的開心果 發表于 曲藝時間:2022-04-17
謝謝邀請。
因為x——是先取值後再自減,所以當y==1是,x==0,迴圈結束,所以只會輸出兩個##。
x——是先取值再減。——x是先減再取值。
1<=x<=2應當看成(1<=x)<=2,而1<=x是非true即false的,即只能是0或1,它恆小於2,因此原式恆成立,while無限迴圈。
在C語言裡,判斷 x大於等於1, 小於等於2的正確方法是:
if( x >= 1 && x <= 2)
不要把數學裡的表達方式:1 <= x <= 2 套用到C語言上,
切記!切記!
然後說說這個為什麼會死迴圈:1<=x是邏輯表示式,C語言裡面用1表示true,用0表示false。不管1 <= x 的結果是0還是1,它小於等於2的結果都是true,所以當然就會成為死迴圈。
所以,x恆等於2是不存在的,你沒有搞懂if後面的邏輯運算語句才是真。