看板 C_and_CPP 關於我們 聯絡資訊
小弟剛學c語言,有個小問題 int x=0; if (x=1) printf("%d",x); else printf("%d",x); 為什麼會出現印出會是 1 1 因為一開始沒看清楚以為是if (x == 1) 但是不瞭解這行if(x=1) 為什麼x就會載入1呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.174.184
MOONRAKER:x=1在任何地方都是x=1 不因為在if()裡面就自動變成x==1 08/22 18:17
MOONRAKER:x=k執行時會傳回那個k 只要k不為0 if()就視為成立 08/22 18:18
b9307025: = 是指定符號 == 是等號 兩者不同 你把1指定到變數x 08/22 19:01
b9307025:而且else是多餘的 因為你的 expression 一直都是true = = 08/22 19:04
tjjh89017:如果是x=0,那才會執行到else 08/22 19:08
lsc36:=是指定 由右到左 所以先把x指定為1 再把x丟到if的判斷裡 08/22 23:29
lsc36:所以等價於 if(1) 08/22 23:29
TsinTa:嚴格來講,應該說x=1的表達式本身之值會等於左邊的運算元 08/22 23:51
TsinTa:不過該值必須是指定後所得的結果 08/22 23:54