作者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