i++和++i命令有什么区别?
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左值是不可赋值的;而作为临时对象的右值可能允许被赋值。左值与右值的根本区别在于是否允许取地址&运算符获得对应的内存地址。
比如:
int i = 0;
int *p1 = &(++i);//正确
int *p2 = &(i++);//错误
++i = 1;//正确
i++ = 1;//错误
扩展资料:
当i=5时,s=(++i)+(++i)和s=(i++)+(i++)的值:
1、当i=5时,s=(++i)+(++i)=13 先算第一个(++i),++在前面,就把i先加1再把赋值,即先把i变为6然后再得出(++i)的值为6,这时i已经变为6了,
再计算第二个(++i),++在前面也是先把i加1后再赋值,不过这时的i已经为6了,第一步的时候把i变成6了的,然后加1的话就变成7了,所以第二个(++i)的值为7,s=(++i)+(++i)=6+7=13。
2、s=(i++)+(i++)=11 先算第一个(i++),i在前面,就先赋值再把i加1,即(i++)的值为5,i的值变为6,第二个(i++),i在前面,先赋值再把i加1,这个时候的i已经为6了,即(i++)的值为6,而i已经变为7了。所以s=(i++)+(i++)=5+6=11。
参考资料来源:百度百科-自增自减运算符
参考资料来源:百度百科-++
1、赋值顺序不同:
++ i 是先加后赋值;++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i = a =b,即 ++i 是一个左值;
i ++ 是先赋值后加;i++ 的后面一步是自增,不是左值。
++i和i++都是分两步完成的。
2、效率不同:
比如i=3,b=i++就是说b=3,完成之后让i变成4,b=++i就是先让i++变成4,然后b=4,其中++i比i++效率要高些。
3、操作完成后,值不同:
对于n=++ i ,进行操作后,n的值发生了改变,其值变成了i+1。
对于n=i++ ,进行操作后,n的值不发生改变,其值仍然为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左值是不可赋值的;而作为临时对象的右值可能允许被赋值。左值与右值的根本区别在于是否允许取地址&运算符获得对应的内存地址。
比如:
int i = 0;
int *p1 = &(++i);//正确
int *p2 = &(i++);//错误
++i = 1;//正确
i++ = 1;//错误
扩展资料:
当i=5时,s=(++i)+(++i)和s=(i++)+(i++)的值:
1、当i=5时,s=(++i)+(++i)=13 先算第一个(++i),++在前面,就把i先加1再把赋值,即先把i变为6然后再得出(++i)的值为6,这时i已经变为6了,
再计算第二个(++i),++在前面也是先把i加1后再赋值,不过这时的i已经为6了,第一步的时候把i变成6了的,然后加1的话就变成7了,所以第二个(++i)的值为7,s=(++i)+(++i)=6+7=13。
2、s=(i++)+(i++)=11 先算第一个(i++),i在前面,就先赋值再把i加1,即(i++)的值为5,i的值变为6,第二个(i++),i在前面,先赋值再把i加1,这个时候的i已经为6了,即(i++)的值为6,而i已经变为7了。所以s=(i++)+(i++)=5+6=11。
参考资料来源:百度百科-自增自减运算符
参考资料来源:百度百科-++
1、赋值顺序不同:
++ i 是先加后赋值;++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i = a =b,即 ++i 是一个左值;
i ++ 是先赋值后加;i++ 的后面一步是自增,不是左值。
++i和i++都是分两步完成的。
2、效率不同:
比如i=3,b=i++就是说b=3,完成之后让i变成4,b=++i就是先让i++变成4,然后b=4,其中++i比i++效率要高些。
3、操作完成后,值不同:
对于n=++ i ,进行操作后,n的值发生了改变,其值变成了i+1。
对于n=i++ ,进行操作后,n的值不发生改变,其值仍然为i。
参考资料
百度百科-++
文章标签:
来自:i是什么意思
本文链接:https://www.u1e.cn/baike/a/e055492838c528caf0725eae [复制]
猜你喜欢
有梦想的人睡不着,没梦想的人睡不醒。
Just because I don't want to be savage, it doesn't mean I have no temper.
最终你相信什么就能成为什么。因为世界上最可怕的二个词,一个叫执着,一个叫认真,认真的人改变自己,执着的人改变命运。只要在路上,就没有到不了的地方。
Teacher, engineer of human soul, who won't praise you!
心香三炷达苍冥,祈愿尘寰六合清。更愿佛光常注照,诸方好运享安宁!给您拜年了,祈愿您新年胜因善缘,吉祥安康!
寂寂闻猿愁,行行见云收。——李白《寻高凤石门山中元丹丘》
家声中垒也称贤,喜气临门敞绮筵,双璧联辉夸美眷,六葭应节缔良缘;女如五彩云犹丽,郎却斯文德自妍,恐负嘉招先作贺,诗题汤饼约明年。
不图虚名,不慕奢华。
不管发生什么,你都不要放弃,肯定会有意想不到的风景。也许不是你本来想走的路,可是另一条路有另一条路的风景,不要念念不忘原来的路,在这里你会遇到难忘的更好的风景。
在遥远的城市,陌生的地方,有他未曾见过的山和海。
俗话说:一百种人有一百种命运,有的人可以一条路一直走到底,有的人却注定要曲曲折折,不过谁也不需要羡慕谁。最重要的是:我们迟早会遇上。
人总要找点事情做,让自己忙起来,忙起来才知道生活不易,才明白平时的忧伤都是矫情。
等一阵风,等一阵雨,等一个唯一的你。
你们给我挺住,都别吃,都那么肥了怎么还有脸吃。
如果不醒来,那么现实和梦境又有何分别。
天塌下来你顶着,我垫着!
最美的不是下雨天,是陪你一起躲过的屋檐。
南音少女
如果坚强的人落泪了,一定是撑不下去了。
您是一棵大树,春天倚着您幻想,夏天倚着你繁茂,秋天倚着您成熟,冬天倚着您沉思。亲爱的妈妈,感谢给予我的一切。
歇后语大全
砖窑旁边盖楼房是什么意思?
张生的病是什么意思?
铡刀下伸驴头是什么意思?
游泳池里撒网是什么意思?
一手遮天,一手捂地是什么意思?
一口咬了黄瓜蒂是什么意思?
一脚踏进稀泥凼(d是什么意思?
一步跨进姨姐房是什么意思?
香肠做链子是什么意思?
瞎子跳高是什么意思?
堂屋里挂粪桶是什么意思?
寿星出点子是什么意思?
石匠会铁匠是什么意思?
十年寒窗中状元是什么意思?
十八只唢呐齐奏是什么意思?
生成的骨头长就的肉是什么意思?
三更半夜见太阳是什么意思?
三分面粉七分水是什么意思?
热中送扇雪中送炭是什么意思?
瘸子赶山(打猎)是什么意思?
蚯蚓打哈欠是什么意思?
墙缝里的坚强不屈蚁是什么意思?
破庙里的菩萨是什么意思?
拍马屁的拍上了大腿是什么意思?
糯米粑粑是什么意思?
念完了经打和尚是什么意思?
泥鳅落旱田是什么意思?
满街挂灯笼是什么意思?
老爷家里当差的是什么意思?
老牛赶山是什么意思?
苦瓜虫是什么意思?
看《红楼梦》淌眼泪是什么意思?
枯树根上浇水是什么意思?
开了瓶的啤酒是什么意思?
画饼充饥是什么意思?
黑狗熊耍扁担是什么意思?
和尚坐岩洞是什么意思?
喝了五味汤是什么意思?
风箱的嘴巴是什么意思?
黄鹤楼上看行人是什么意思?
飞机上晒衣服是什么意思?
独臂将军亮相是什么意思?
碟子装水是什么意思?
大风刮倒了帅旗是什么意思?
从石头里挤水是什么意思?
吹灯打哈欠是什么意思?
船帮做棺材是什么意思?
瘪了的唢呐是什么意思?
半天云里放屁是什么意思?
案板上的擀面杖是什么意思?
相关推荐
还没有人回应过