C语言中的a++与++a的速记理解

     关于a++与++a理解时容易烦迷糊(未定义行为,undefiend behavior), 但在用时只要避免复杂难懂的表达式时,基本上都不会出错。如果需要全部理解二者区别,需要读2者的汇编语言。

下面谈一下自己的速记理解:

第一种

a++ ,名 后自增,因为加号在后面嘛,这个好理解,那往下一步思考,为什么叫后自增呢, 因为是先赋值,在自增运算。即下面b=a++,与下面等价:

int a = 1 ;

// b = a++ ; 与下面等价


b = a;  //先赋值
a = a +1;//后自增

a=1 ; b=++a;执行后,最终 b为1 ,a为2。以后看到a++,就叫后自增就好了,然后在思考为啥叫,这样在宏观上就基本上理解了。

同理思考++a

++a,名 前自增,因为加号在前面嘛,这个好理解,那往下一步思考,为什么叫前自增呢, 因为是先自增运算,在进行赋值运算,在。即下面b=++a,与下面等价:

int a = 1 ;

// b = ++a ; 与下面等价


a = a +1;//先自增
b = a;  //后赋值

a=1 ; b=++a;执行后,最终 b为2 ,a为2。  注意2个操作后的结果不同,前自增b为1,后自增b为2。以后看到++a,就叫前自增就好了。。。。

第2种

第二种比较绕一点,没有第一种那么直观,所以直接上代码了

int a = 5;
 
// int b 相当于:5 + 6 + 7 = 18      
     

 int b = a++ + a++ + a;
// 执行完a++[运算]后a进行自增,不是执行完此条完整语句后a才自增,而是在同一条语句中a++以后的a都是自增以后的值  
 // a经过两次自增,所以它的值是7
int a = 5;
 
// int b 相当于:6 + 7 + 7 = 20      
     

 int b = ++a + ++a + a;
 * a先进行自增,然后执行++a[元运算表达式]时.并且在同一条语句中,++a以后的a的值,都是自增以后的值
 // a经过两次自增,所以它的值也是7

猜你喜欢

转载自blog.csdn.net/qq_39463175/article/details/109069574
今日推荐