【发布时间】:2021-03-05 02:48:39
【问题描述】:
我用 C 语言执行了一段代码,但是我无法理解它的输出。
#include <stdio.h>
int main()
{
int a=5;
int b= ++a + 0!=0;
printf("%d %d",++a, b);
return 0;
}
上述程序的输出是
7 1
我无法理解为什么会这样。
【问题讨论】:
-
查找operator precedence。
b值解析为((++a) + 0) != 0.. -
当遇到这样的问题时,总是忽略间距。该代码中没有
0!=0,但误导性的间距使它看起来像存在。 Another example 是a --> 0真的是a-- > 0。 -
您是否尝试稍微更改一下代码以查看会发生什么?更改为
b = 0!=0;(b现在0)或更改为b = (++a + 0) != 0;(b现在1)将揭示发生了什么
标签: c output operators addition