码迷,mamicode.com
首页 > 其他好文 > 详细

++a和a++不是左值

时间:2015-06-27 11:21:13      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:

转自  http://blog.csdn.net/todd911/article/details/8860960
[cpp] view plaincopy
 
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3.   
  4. int main(void){  
  5.         int i=0,j=0;  
  6.         i++ = 10;  
  7.         ++j = 10;  
  8.         return EXIT_SUCCESS;  
  9. }  

 

上面的编译时会出现一下错误:

aplus2.c:6:6: error: lvalue required as left operand of assignment
aplus2.c:7:6: error: lvalue required as left operand of assignment

意思就是等号左侧应该是应该是一个变量

 

书上有这个几句话:

前缀和后缀形式的增值操作符都赋值一份变量值的拷贝,用于周围表达式的值正是这份拷贝。

前缀操作符在进行赋值之前增加变量的值,后缀操作符在进行赋值之后才增加变量的值

 //不是太明白

对于这几句话,我的理解是:

比如i++ = 10这句,先将i的值进行复制到i++(可以将i++看成值10的别名),然后再对i加1,所以这句语句执行完后,i的值是11,而i++的值是10。

同理,++i = 10这句,先对i加1,然后再将i的值复制到++i(可以将++i看成值11的别名),所以这句语句执行完后,i和++i的值是11。

 

++i和i++的结果是i值的拷贝,并不是变量本身,所以无法向一个值进行赋值。

++a和a++不是左值

标签:

原文地址:http://www.cnblogs.com/QingCHOW/p/4603693.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!