我是 C 语言的新手,所以请 sum1 帮助我。交流代码编写
int i=3;
printf("%d",++i + ++i);
编译器给出 O/P =9。如何?
我是 C 语言的新手,所以请 sum1 帮助我。交流代码编写
int i=3;
printf("%d",++i + ++i);
编译器给出 O/P =9。如何?
结果未定义。您在表达式中多次修改变量(或者更准确的序列点)。
在序列点之间多次修改变量是未定义的,所以不要这样做。
它可能是您的编译器,因为这种特殊情况决定评估
++i + ++i
为
++i
,产生 4,留下 i 为 4++i
,产生 5,将 i 保留为 5(如上一步将 i 保留为 4,将其增加到 5)另一个编译器,或者如果您更改优化级别,或者如果您稍微更改代码,可能会产生不同的输出。