今天在学习C语言的时候,遇到这么一个问题。我们都知道自增表达式a++,a--与++a和--a。当定义一个变量b,使其等于自增表达式的时候,两种自增表达式最后赋给b的结果都是不一样的。
b=a++,此时b的值为a;而b=++a,此时b的值为(a+1)。
我一开始对于这两种表达式最后b的结果是存疑的。因为自增运算的优先级大于赋值运算,而我一开始认为这两种b的结果是因为一个是a为自增运算的左值,一个是自增运算的右值,所以导致b最后的结果不一样。后来在反复思考左值和右值的定义之后,越想越想不通。最后在与自己的专业课老师交流了之后,才知道b的值是自增表达式本身的值。
当自增运算符为后缀的时候,表达式本身的值为a;而当自增运算符为前缀的时候,表达式是本身的值为(a+1),即运算的结果。所以导致b的值最后是不一样的。
第一次写学习博客,如果有不对的地方,请各位dl指正,谢谢!
#include <stdio.h>
int main()
{
int a = 1;
int b;
b = (a++);
printf("%d\n", b);
a = 1;
b = (++a);
printf("%d\n", b);
return 0;
}