预增量和后增量

Tri*_*ity -2 c pre-increment post-increment

#include<stdio.h> 
int main()
{
    int a = 10;
    ++a = 20;      
    printf("a = %d", a);
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上述代码获得的输出是:a = 20; 当作为C++代码运行时.

#include<stdio.h> 
int main()
{
    int a = 10;
    a++ = 20;      
    printf("a = %d", a);
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这给出了编译错误.这背后的原因是什么?

oua*_*uah 6

您正在使用C++编译器编译您的程序.

在C++中,预增量运算符的结果是左值,但后增量运算符的结果不是左值.

在C中,预增量和后增量运算符都不是左值,因此您无法分配增量运算符的结果.

正如你所看到的,C和C++在这个问题上有不同的规则,这并不奇怪,因为它们是不同的语言.

  • C和C++的+1是不同的语言,并详细说明了它在这里的显示方式. (2认同)
  • +1我从来不知道`++ i`不是C中的左值.C是如此奇怪的语言...... (2认同)