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

 我来答
小耳朵爱聊车
高粉答主

2021-01-16 · 说的都是干货,快来关注
知道大有可为答主
回答量:7378
采纳率:100%
帮助的人:300万
展开全部

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

帐号已注销
2021-08-02 · TA获得超过77万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:162万
展开全部

赋值的时候有区别的,++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。

赋值语句

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

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

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

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大时代暑
推荐于2016-11-02 · TA获得超过2.5万个赞
知道大有可为答主
回答量:4111
采纳率:0%
帮助的人:4806万
展开全部
简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a = i;
而 a = i++,相当于 a = i; i=i+1;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qjfcu2
2010-09-14 · TA获得超过591个赞
知道小有建树答主
回答量:554
采纳率:0%
帮助的人:391万
展开全部
++i是先自加,后运行。i++是先运行,后自加。
比如
int i=2;
a=++i;
i=2;
b=i++;
在运行之后
a就等于3 b就等于2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zzgkyo
2010-09-14 · TA获得超过107个赞
知道答主
回答量:100
采纳率:0%
帮助的人:58.8万
展开全部
int i=0,k=0, j;
j=++i;//j=1,i=1,参与运算前自加1
j=k++;//j=0,k=1,参与运算后自加1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式