c - 为什么编译器以不同的方式对待 i++++++i 和 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/

相关文章:

c - 如何使用ESC序列设置前景色?

c - 与正常函数调用相比仍然没有得到回调

decimal - 如何从 RDLC 中包含 .000 的 float 中删除小数部分

nhibernate - 如何在 Expression.Or 中设置 2 个以上的表达式

java - java正则表达式中查找String中的字段

c - 在AVL树中搜索平衡因子为-2的节点

C信号量线程读取文件

c++ - 如何在 Pro*C 中保持较低的实现/维护成本?

expression - Power Query—— native 查询中的列表值

c - C (GCC) 宏扩展期间的语句表达式语法错误