转自 http://blog.csdn.net/todd911/article/details/8860960
[cpp] view plaincopy
- #include <stdio.h>
- #include <stdlib.h>
- int main(void){
- int i=0,j=0;
- i++ = 10;
- ++j = 10;
- return EXIT_SUCCESS;
- }
上面的编译时会出现一下错误:
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值的拷贝,并不是变量本身,所以无法向一个值进行赋值。
时间: 2024-10-05 23:09:19