作者victork (宗)
看板Programming
標題[問題] 請問一個C的問題
時間Sun May 25 14:11:16 2008
程式碼如下
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
1F:→ vber:因為運算子的優先權 59.104.186.3 05/25 14:27
2F:推 LPH66:==比||先 ||又比=先 140.112.30.84 05/25 14:36
3F:→ LPH66:所以變成k==0得1 0||1得1 k=1得1 條件成立 140.112.30.84 05/25 14:36
4F:推 mosquito520:不應該在if expression作assign的動作220.133.145.202 05/25 16:09
5F:推 a1234957:沒仔細看研究過優先權,還真不知為何是11218.173.102.182 05/25 16:55
6F:→ a1234957:不過沒人程式這樣寫吧..218.173.102.182 05/25 16:55
7F:推 LiloHuang:要在if判斷式中進行assign請愛用括號 140.114.71.40 05/25 16:59
8F:→ victork:謝謝以上的解答 這題是在網路上找到的 219.86.131.112 05/25 18:57
9F:→ victork:因為很疑惑 才上來問問 219.86.131.112 05/25 18:58
10F:推 stonehomelaa:這是故意惡搞的吧 140.115.201.59 05/26 11:48
11F:→ world9918:真正寫程式也不會有人這樣寫吧.. 220.136.6.51 05/26 21:42