在for循环中++i跟i++有区别吗?
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)循环:
输出结果:
++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
参考资料:++_百度百科
当然是有区别:一个是先加一再循坏,另一个是先循环再加一。
具体的:如果只是一条单独语句,没区别,比方说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语言-百度百科
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];
#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++要块一点,当然,编译器不知道会不会做这种优化。