++i 和 i++的底层区别
- ++i,是先取 i 的地址,增加它的内容 ,然后把值放到寄存器中
- i++,是先取 i 的地址,把它的值装入寄存器,然后增加内存中 i 的值
关于 ++i 是左值,而 i++ 是右值的问题
- ++i,返回值是 i 本身自己,是一个变量
- i++,返回值是 i 之前的一个数值,是一个数,不是变量
因此 ++(i++) 这就是错误的,因为 i++ 返回的是右值,而不能 ++右值。
关于效率
- i++,会产生临时变量,效率比 ++i 要低一些,因此推荐使用 ++i。
因此 ++(i++) 这就是错误的,因为 i++ 返回的是右值,而不能 ++右值。