c語言的If表達式可以有賦值語句嗎
if(a=2)
{
b=2;
c=4;
}
else d=3;
這個語句沒有語法錯誤(可能會有警告),是可以執行的。
但是這個語句永遠沒有機會執行else部分。
a=2賦值表達式的計算結果就是2,當這個表達式出現在if語句邏輯表達式位置上的時候,它的計算結果是被當作邏輯值處理的,在C語言中用整型數表示邏輯量,非零表示“真”,所以這是一個永真式;這個if的邏輯條件永遠不會為假。
也就是說,這里所表達的邏輯條件并不是“a的內容是否等于2”,而是向變量a中送入數據2。
C語言,if(表達式)中,表達式如果是一個賦值語句,這個if就會恒真
非零即真,例如if(a=5) { b=3; c=5; }else d=3;這個語句沒有語法錯誤(可能會有警告),是可以執行的。
但是這個語句永遠沒有機會執行else部分。a=5賦值表達式的計算結果就是5,當這個表達式出現在if語句邏輯表達式位置上的時候,它的計算結果是被當作邏輯值處理的,在C語言中用整型數表示邏輯量,非零表示“真”,所以這是一個永真式;這個if的邏輯條件永遠不會為假。
也就是說,這里所表達的邏輯條件并不是“a的內容是否等于5”,而是向變量a中送入數據5。
問個問題,C語言的,關于if語句中條件判斷是一個賦值語句問題
復制表達式x=5本身是有值的,這個值等于左值。也就是說x=5這個式子的值是x,也就是5。而x=5這個式子的值是5不為零,就是真的,還會執行k=2。
一般來說,if后面語句是禁止使用單等于號,也就是賦值號的,就是為了防止出錯。
980515024 這位回答的有錯誤。if(x=5)編譯是不會報錯的。
如果是x=0,這個表達式的值就是0,也就是假的,就不執行后面的語句了。用什么軟件編譯無所謂,6.0還是dev還是vs08都行。