#include <stdio.h>
int main()
{
int c=10,b;
b=++c+++c;
printf("%d",b);
return 0;
}
有人可以告诉我,为什么会出现编译错误?
答案 0 :(得分:3)
胡言乱语被标记为
++ c ++ + c
并解析为
((++c)++) + c
这会尝试增加由++c
产生的 rvalue ,这是不允许的。您只能递增左值(或类型,在C ++中)。
即使允许这样做,也会产生未定义的行为:您将进行无序修改并使用c
的值。
答案 1 :(得分:0)
如果在++c + ++c
b = ++c + ++c;
但这只是修复了编译错误。你正在做的是未定义的行为。尝试使用c
在同一表达式中多次更改++
的值将导致未定义的行为。