C/C++中左值++和右值++
自增运算符作为笔试中的常考题型,出现概率极高,需要考虑++的运算顺序和优先级,必须要一步一步按序分析,否则一步错全部错;++操作在不同的编译器中执行的结果也会不同,具体结果看具体的编译器执行方式。
分析题目之前,我们需要弄懂前置++和后置++的区别,这样即使题目千变万化,基本运算规则不会改变。
a++:程序执行a所在的语句之后,最后再执行+1操作;
++a:程序在执行a所在的语句之前,先执行+1操作。
1、入门题:
#include <stdio.h>
int main()
{
int a = 1;
printf("a = %d\n", a++);
printf("a = %d\n", ++a);
return 0;
}
执行结果:
a = 1;
a = 3;
具体分析:
在看到具有后置++的程序语句时,我们可以先将++运算符先忽略掉,于是我们先执行printf语句,先输出a的值为1,再对a进行+1的操作,因为程序执行后打印出来的a的值为1,但是此时数据缓存区内的a的值为2;
在进行到第二条前置++语句时,数据缓存区内的a此时的值为2,先执行+1操作,再执行printf操作,所以输出的a的值为3。
2、进阶版
(C编译器不支持左值前置++,需使用C++进行编译)
#include <stdio.h>
int main()