<分区>
int i=5;
printf("%d",i+++++i);
这给出了错误,但是:
printf("%d",i+++i);
给出输出 11。在这种情况下,编译器将其读取为:
printf("%d",i+ ++i);
为什么这不是在第一个表达式中完成的?即:
printf("%d",i+++++i);
标签 c expression
<分区>
int i=5;
printf("%d",i+++++i);
这给出了错误,但是:
printf("%d",i+++i);
给出输出 11。在这种情况下,编译器将其读取为:
printf("%d",i+ ++i);
为什么这不是在第一个表达式中完成的?即:
printf("%d",i+++++i);
最佳答案
由于运算符优先级 i++++++i
被视为 (i++)++ + i)
。这会导致编译器错误,因为 (i++)
不是左值。
关于c - 为什么编译器以不同的方式对待 i++++++i 和 i+++i,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19923255/