++n
等价于 n=n+1
,n自增1,结果是左值,可以放在等号左边:
n=1;++n=1;
结果是:n=1
说明++n的结果返回给了n,然后1再赋值给n,
n=1;a=++n;
结果是:a=2,n=2
n++
等价于 n=n+1
,n自增1,但结果是右值
n=1;n++=1;
报错:error
说明n++的结果不能再次被赋值(从变量降级为一个内存值???)
n=1;a=n++;
结果是:a=1,n=2
,说明 n++优先级低于a=n;
左值&右值的区别
(在赋值语句中)
左值(lvalue) 说明此变量指向一个地址,且可以再次被赋值,可以被覆盖,赋值后依然为变量。
而右值(rvalue)则说明此变量已经直接存储到了一块内存空间,而赋值语句只能对变量操作,不能直接对内存空间(常量?)操作,不能再次被覆盖。
例外
当n++;
或者++n;
作为单独的语句出现时,效果都是 n=n+1;
没有区别。
说明
我不知道我想的这些原因是否正确,但是暂时就这么理解即可,可以加深记忆,解决一点点疑惑。
资料:
理解C和C++中的左值和右值
百度知道