[問題] 請問一個C的問題

看板Programming作者 (宗)時間17年前 (2008/05/25 14:11), 編輯推噓5(506)
留言11則, 8人參與, 最新討論串1/2 (看更多)
程式碼如下 int k = 0; if (k = 0 || k == 0) printf("%d\n", k); printf("%d\n", k); 請問為什麼上面這段程式的輸出會是 1 1 呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.86.131.112

05/25 14:27, , 1F
因為運算子的優先權
05/25 14:27, 1F

05/25 14:36, , 2F
==比||先 ||又比=先
05/25 14:36, 2F

05/25 14:36, , 3F
所以變成k==0得1 0||1得1 k=1得1 條件成立
05/25 14:36, 3F

05/25 16:09, , 4F
不應該在if expression作assign的動作
05/25 16:09, 4F

05/25 16:55, , 5F
沒仔細看研究過優先權,還真不知為何是11
05/25 16:55, 5F

05/25 16:55, , 6F
不過沒人程式這樣寫吧..
05/25 16:55, 6F

05/25 16:59, , 7F
要在if判斷式中進行assign請愛用括號
05/25 16:59, 7F

05/25 18:57, , 8F
謝謝以上的解答 這題是在網路上找到的
05/25 18:57, 8F

05/25 18:58, , 9F
因為很疑惑 才上來問問
05/25 18:58, 9F

05/26 11:48, , 10F
這是故意惡搞的吧
05/26 11:48, 10F

05/26 21:42, , 11F
真正寫程式也不會有人這樣寫吧..
05/26 21:42, 11F
文章代碼(AID): #18EGC9Ja (Programming)
文章代碼(AID): #18EGC9Ja (Programming)