从左值和右值的角度分析a++和++a

摘自牛客上的一个题目:

int a=5,则 ++(a++)的值是?
答案是会编译报错。
原因:
a++返回的是右值(rvalue),而我们不能对一个右值进行自增操作。所以++(a++)会报错。
怎么理解呢?
(a++)返回的是a在+1之前的值,这个值是一个临时的对象。这个临时的对象在(a++)这条语句结束后,马上就结束了生命周期,即右值,而我们不能对一个右值进行自增运算。
总之,a++和++a都是一个表达式,表达式返回的都是一个右值,我们不能对一个右值进行自增操作。
类似于++(++a)也是不对的。
从左值和右值的角度分析a++和++a_第1张图片

你可能感兴趣的:(c语言基础&实用技巧,c语言)