C关于++i和i++在for循环中的区别

我知道++i和i++的区别在于执行+的前后顺序不一样,我现在想知道的是;在for循环中这两种表达是否也不同。如:区分 for(int i=0;i<5;i++)和for(int i=0;i<5;++i)这两种表达式的结果是否一样?我倒是认为是一样,至少从程序运行的结果来说,是一样的。不知道我的想法正不正确?不管正不正确请详细说明,最好也有举例

第1个回答  2020-04-24
这里涉及到一个高层的问题了,关于左值右值得问题,++i比i++少一个寻址的步骤,所以++i一般是对于程序优化的方案,当然这里要看具体情景而言了.......
第2个回答  2012-02-14
一样,不一样在有其他式子
第3个回答  2019-03-01
++i跟i++的区别是这样的:
#include
<iostream.h>
void
main()
{
int
i=3,j=3;
cout<<++i;
//OUT:
4
cout<<j++;
//OUT:
3
cout<<i;
//OUT:
4;
cout<<j;
//OUT:
4;
}
但是可能效率会不一样,实现可能如此:
class
CTemp
{
public:
CTemp():i(0)
{
}
CTemp
operator
++
(int)
//i++调用这个
{
CTemp
tmp(*this);
i++;
return
tmp;
}
CTemp
&
operator
++()
//++i调用这个
{
i++;
return
*this;
}
//
operator
int
const
(){
return
i;
}
virtual
ShowInfo()
{
CString
strMsg;
strMsg.Format("i
=
%d",i);
AfxMessageBox(strMsg);
}
protected:
int
i
;
private:
};
实际上++i可能比i++要块一点,当然,编译器不知道会不会做这种优化。
相似回答