今天无意之间看到了帖子上有人说 i++=5; //不合法
++i=5; //合法
首先对于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++和++i的效率问题:按上面分析来说,++i的效率是比i++效率高些的.(VC)对于内置(built-in)类型,写++变量 和变量++编译器都经过优化,采用++变量的方式.但是对于自定义类对象如果重载先++,和后++操作符那么要使用先++,因为这时编译器,不可能对你的 类型进行优化!