c语言中i++是怎样的,为什么(i++)=1是错误?而(++i)=1是对的?

求高手

二.再讲讲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;

参考资料:http://blog.csdn.net/kongbai308416350/article/details/4476509

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-22
这是增减操作符置于变量前后的区别之一,对于后置型(i++),C/C++当作表达式,而对于前置型(++i),则当作变量,我们知道,左值只能是变量,不能是表达式,所以i++ = 1是错误的,而对于前置型,因为当作变量看,所以++i = 1是对的。
第2个回答  2012-05-22
i++意思是执行代码后自增一,++i是先自增一再执行代码。你的代码都是错的!""=""这个是附值语句,i=1;这是使i的值为一的意思,i==1;这才是i等于一的意思。编程的符号跟数学不同!
第3个回答  2012-05-22
i++是先使用i的值,使用完毕后i的值加1,所以(i++)最后就表示i+1,当然不能赋值
++i是先把i的值加1再使用,(++i)最后表示i,所以可以赋值
第4个回答  2012-05-22
i++是先使用i的值,使用完毕后i的值加1。++i是先把i的值加1再使用。这里的=是赋值的意思
相似回答