#include<stdio.h>
int main()
{
int a = 10;
++a = 20;
printf("a = %d", a);
getchar();
return 0;
}
上述代码的输出为:a = 20;当作为C ++代码运行时。
#include<stdio.h>
int main()
{
int a = 10;
a++ = 20;
printf("a = %d", a);
getchar();
return 0;
}
这会产生编译错误。这背后的原因是什么?
答案 0 :(得分:6)
您正在使用C ++编译器编译程序。
在C ++中,预增量运算符的结果是左值,但后增量运算符的结果不是左值。
在C中,预增量和后增量运算符都不是左值,因此您无法分配增量运算符的结果。
正如你所看到的,C和C ++在这个问题上有不同的规则,这并不奇怪,因为它们是不同的语言。
答案 1 :(得分:0)
语句++a = 20
或a++ = 20
是错误的,任何好的编译器都会出错。如果您了解C
哲学,a++
或++a
是a = a+1
。所以,++a = 20
实际上意味着
a = a + 1 = 20
这太荒谬了。这些语句将单独用作增量的快捷方式。请通过C
语言浏览Ritchie和Kernighan的经典书籍。
我假设您正在使用C
编译器