在for循环中++i跟i++有区别吗?

int *p = new[1024];
for(int index = 0;index < 1024;++index)
p[index] = 0;
和for(int index = 0;index < 1024;index++)
p[index] = 0;
一样都是给p[0]赋值?

主要有以下三个区别:

1、++i是先改变i的值即加1后再使用i的值;而i++是先使用i的值在改变它的值即加。

2、for循环内部仅形式不同:当i++循环和++i循环在for循环内部,虽然形式上明显不同,但输出结果可以一样。如下图所示:

for(i++)循环:

输出结果:

for(++i)循环:

输出结果:

3、print()输出函数内,不仅形式不同且输出结果也不同:i++和++i,二者在形式上明显不同,且输出结果也不同,输出值分别为1和2。如下图所示:

for(i++)循环:

输出结果:

for(++i)循环:

输出结果:

参考资料:百度百科-for循环中关于i++与++i的阐释

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2019-08-06

++i跟i++的区别是这样的:

#include <iostream.h>void main(){ int i=3,j=3; cout<<++i;      //OUT: 

4cout<<j++;      //OUT: 3cout<<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++要块一点,当然,编译器不知道会不会做这种优化。

扩展资料:

"++"是C和C++还有JAVA等高级语言里的自增运算符,使可变左值(如变量,迭代器变量等)加一。用法主要有两种:i++;++i;其中:++i是使用i之前先使i加一。i++是使用i之后再加一。

如果不能理解,那么可以理解为:++i是先计算,再操作,i++是先操作,再计算。

++i和i++是谁在前先取谁,但加一优先运算并赋给原值,取的值再参与其他运算。例如:

#include <iostream>

using namespace std;

int main()

{ int i,j; i = 1;j = 2;j = i++; cout << "j=" << j << " " << "i=" << i << endl;

j = 2; i = 1;

j = ++i; cout << "j=" << j << " " << "i=" << i << endl;

return 0;}

结果是:j=1 i=2

j=2 i=2

参考资料:++_百度百科

本回答被网友采纳
第2个回答  推荐于2019-09-13

当然是有区别:一个是先加一再循坏,另一个是先循环再加一。

具体的:如果只是一条单独语句,没区别,比方说for(i=0;i<9;i++)与for(i=0;i<9;++i)都表示每次f0r循环结束时i+1后判断i是否<9再进入下一次循环。或者是循环内部的i++;及++i;也同理。

但如果不是单独语句,就有区别:比如n=++i;和n=i++;n赋的值就不同,前者n的值为i,i再+1,后者n的值为+1后的i值。再有把一个数组的值赋到另一个数组中时,y[j++]=x[i];与y[++j]=x[i];也不同y数组开始储存的起点不同。

扩展资料:

for循环

for循环结构是c语言中最具有特色的循环语句,使用最为灵活方便,它的一般形式为:

for(表达式1;表达式2;表达式3)循环体语句 。(其中;不能省略)

表达式

表达式1为初值表达式,用于在循环开始前为循环变量赋初值。

表达式2是循环控制逻辑表达式,它控制循环执行的条件,决定循环的次数。

表达式3为循环控制变量修改表达式,它使for循环趋向结束。

循环体语句是在循环控制条件成立的情况下被反复执行的语句。

但是在整个for循环过程中,表达式1只计算一次,表达式2和表达式3则可能计算多次,也可能一次也不计算。循环体可能多次执行,也可能一次都不执行。

先执行表达式2,然后执行循环结构,最后表达式3,一直这样循环下去。

for循环语句是c语言种功能最为强大的语句,甚至在一定程度上可以代替其他的循环语句。

do

do循环结构,do 1 while⑵;的执行顺序是1->2->1...循环,2为循环条件。

while

while循环结构,while(1) 2; 的执行顺序是1->2->1...循环,1为循环条件

以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。

参考资料:C语言-百度百科

本回答被网友采纳
第3个回答  推荐于2017-09-09
就你说得这种情况来说,没有任何区别,for(;;)第2个分号后面的语句是在每次循环结束后执行的
for(int index = 0;index < 1024;++index)
p[index] = 0;
相当于
for(int index = 0;index < 1024;)
{
p[index] = 0;
++index;
}
这里的++index和index++的作用是一样的。

另外
int *p = new[1024];
这句写错了,因该是
int *p = new int[1024];本回答被提问者采纳
第4个回答  推荐于2017-09-22
++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++要块一点,当然,编译器不知道会不会做这种优化。
相似回答