预增量和后增量

时间:2014-07-26 13:05:17

标签: c post-increment pre-increment

#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;
}

这会产生编译错误。这背后的原因是什么?

2 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:0)

语句++a = 20a++ = 20是错误的,任何好的编译器都会出错。如果您了解C哲学,a++++aa = a+1。所以,++a = 20实际上意味着     a = a + 1 = 20 这太荒谬了。这些语句将单独用作增量的快捷方式。请通过C语言浏览Ritchie和Kernighan的经典书籍。

我假设您正在使用C编译器