++i和i++有什么区别 请举例说明 谢谢

2024-12-18 18:50:47
推荐回答(5个)
回答1:

i++和++i命令的区别有:

1、赋值顺序不同

++i是先加后赋值;i++是先赋值后加;++i和i++都是分两步完成的。

因为++i是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i=a=b,即++i是一个左值;i++的后面一步是自增,不是左值。

形象的理解可以是i++先做别的事,再自己加1,++i先自己加1,再做别的事情。

2、效率不同

比如i=3,b=i++就是说b=3,完成之后让i变成4,b=++i就是先让i++变成4,然后b=4,其中++i比i++效率要高些。一般来说在循环域里面,这两者并没有什么很大的区别,但是要注意其生存周期,以及i值在程序流中的变化。

3、i++不能作为左值,而++i可以。

左值是对应内存中有确定存储地址的对象的表达式的值,而右值是所有不是左值的表达式的值。一般来说,左值是可以放到赋值符号左边的变量。

但能否被赋值不是区分左值与右值的依据。比如,C++的const左值是不可赋值的;而作为临时对象的右值可能允许被赋值。左值与右值的根本区别在于是否允许取地址&运算符获得对应的内存地址。

比如:

inti=0;

int*p1=&(++i);//正确

int*p2=&(i++);//错误

++i=1;//正确

i++=1;//错误

扩展资料:

1、C语言中,赋值运算的操作是有方向的,即将右侧表达式的值(也称为右值)赋值左侧的变量,只能是标识一个特定存储单元的变量名。

2、由于变量名只能出现在赋值运算符的左边,因此它也被称为左值;由于常量只能出现在赋值运算符的右边,因此它也被称为右值。左值可以用作右值,但右值不能用作左值。

回答2:

赋值的时候有区别的,++i是先增1,然后再赋值,i++则是先赋值再增1。

i=1

f=++i

j=i++

这样的话,f=2,j=1,当然i=2了。

i=1

j=++i

则 先将i自加1成为2,此时i=2,j=2,

j=i++

则 j=i+1=2,i仍旧等于1。

赋值语句

将确定的数值赋给变量的语句叫做赋值语句。各程序设计语言有自己的赋值语句,赋值语句也有不同的类型。所赋“值”可以是数字,也可以是字符串和表达式。

注意很多语言都使用“等于号”(即“=”)来作为赋值号,所以可能和和平时的理解不同,在使用的时候应予以注意。

以上内容参考:百度百科-赋值

回答3:

简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a = i;
而 a = i++,相当于 a = i; i=i+1;

回答4:

++i是先自加,后运行。i++是先运行,后自加。
比如
int i=2;
a=++i;
i=2;
b=i++;
在运行之后
a就等于3 b就等于2

回答5:

int i=0,k=0, j;
j=++i;//j=1,i=1,参与运算前自加1
j=k++;//j=0,k=1,参与运算后自加1