发布网友 发布时间:2022-04-23 06:08
共5个回答
热心网友 时间:2023-11-09 10:40
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、由于变量名只能出现在赋值运算符的左边,因此它也被称为左值;由于常量只能出现在赋值运算符的右边,因此它也被称为右值。左值可以用作右值,但右值不能用作左值。
热心网友 时间:2023-11-09 10:40
赋值的时候有区别的,++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。
赋值语句
将确定的数值赋给变量的语句叫做赋值语句。各程序设计语言有自己的赋值语句,赋值语句也有不同的类型。所赋“值”可以是数字,也可以是字符串和表达式。
注意很多语言都使用“等于号”(即“=”)来作为赋值号,所以可能和和平时的理解不同,在使用的时候应予以注意。
以上内容参考:百度百科-赋值
热心网友 时间:2023-11-09 10:40
简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a = i;
而 a = i++,相当于 a = i; i=i+1;
热心网友 时间:2023-11-09 10:41
++i是先自加,后运行。i++是先运行,后自加。
比如
int i=2;
a=++i;
i=2;
b=i++;
在运行之后
a就等于3 b就等于2
热心网友 时间:2023-11-09 10:42
int i=0,k=0, j;
j=++i;//j=1,i=1,参与运算前自加1
j=k++;//j=0,k=1,参与运算后自加1