二.再讲讲i++和++i的实现
原来也一直迷惑于i++与++i的返回值的问题,但一直没弄明白.这次一并查清楚吧.
首先对于i++的实现是:
int temp;
temp = i;
i = i+1;
return temp;
而++i的实现是:
i = i+1;
return i;
所以对于我们提出来的问题已经能得到解决了:
i++=5; 是错误的是因为i++返回的是编译器自动分配的临时变量temp,而这个temp并不是你程序中定义的可寻址变量的引用,也就是说你不能通过地址对它进行操作.(换句话说就是不能作为左值)
++i=5;是正确的就是因为其返回值就是i;
这是增减操作符置于变量前后的区别之一,对于后置型(i++),C/C++当作表达式,而对于前置型(++i),则当作变量,我们知道,左值只能是变量,不能是表达式,所以i++ = 1是错误的,而对于前置型,因为当作变量看,所以++i = 1是对的。
i++意思是执行代码后自增一,++i是先自增一再执行代码。你的代码都是错的!""=""这个是附值语句,i=1;这是使i的值为一的意思,i==1;这才是i等于一的意思。编程的符号跟数学不同!
i++是先使用i的值,使用完毕后i的值加1,所以(i++)最后就表示i+1,当然不能赋值
++i是先把i的值加1再使用,(++i)最后表示i,所以可以赋值
i++是先使用i的值,使用完毕后i的值加1。++i是先把i的值加1再使用。这里的=是赋值的意思