问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言中++i 和i++有啥区别啊?

发布网友 发布时间:2022-04-23 04:07

我来回答

5个回答

热心网友 时间:2022-05-16 16:53

i++和++i都是c语言里的自增,但是它们自增的顺序不同。++i表示,i自增1后再参与其它运算,而i++ 则是i参与运算后,i的值再自增1。

for循环里循环变量增值用i++,而不用++i是因为在循环结构里需要循环变量来结束循环,而使用i++则会导致本来应该继续的循环少执行一次,所以循环结构里通常都是循环变量在一次循环结构执行完成之后再自增。

扩展资料

i++和++i前置后置区别的例子:

1、a = i++;

相当于 a = i; i++;

2、a = ++i;

相当于 i++; a = i;

3、int i=3;

int j=4;

int a = i++;

int b = ++j;

printf("%d, %d\n", a, b);

结果是3,5。++前置:i自增1后再参与其它运算;++后置:i参与运算后,i的值再自增1”。很明显,a = i++;由于是先执行赋值运算,再自增,所以结果是a=3,i=4;而b = ++j。

参考资料来源百度百科——自增自减运算符

热心网友 时间:2022-05-16 16:53

关于自增自减运算,很多书籍没有把问题讲清楚,在C语言里是这样的:

1.后置运算:k++表示先运算,后自加。
意思是遇到k++了,我先把当前的k的值拿来参加运算,后面再去管它的自加。
那么,【“后面”后到什么程度呢?要后到当前的语句执行完,即遇到分号;表示
语句执行完了,所以k才自加1。】

如:int k=5,b=0;
b=k++;的意思就是,先算b=k(即b=5),遇到分号;表示语句结束,k才自加1,即k变为6。

2.前置运算:++k表示先自加,后运算
这个意思就是遇到++k了,先把k的值加了1,再往后执行别的。

如:int k=5,b=0;
b=++k;的意思就是,先把k自加1,即k为6,再算b=k(即b=6)。

掌握好这两点,k--和--k也是一样的道理。

热心网友 时间:2022-05-16 16:54

i++;++i;就C语言代码来看,i++ 和 ++i 都只有一行,看起来似乎二者的执行效率一样了?其实不是的,在学习C语言时,教材和老师一般都会强调 i++ 和 ++i 的区别,例如下面这段C语言代码:
int i , j, k;i = 0;j = i++;i = 0;k = ++i;这段C语言代码执行后,j 和 k 的值并不相等:j 等于 0,k 等于 1。既然执行结果有差异,那么执行效率很有可能也是有差异的,事实的确如此。查看上述C语言代码对应的汇编代码,如下:

C语言代码对应的汇编代码
我使用的编译器为 gcc version 4.8.4。
可见,j=i++; 计算机需要 4 条指令来解释,比执行 k=++i; 多出了一条指令。多出的一条指令为:在对 i 执行自加操作之前,先保存 i 的当前值留作稍后使用(赋值为j)。
这样看来,似乎 ++i 的执行效率比 i++ 高一些?
那为了写出效率更高的C语言程序,以后是不是应该尽量使用 ++i,而不是 i++ 了呢?例如下面这样的C语言代码:
for(i=0; i<10; i++);for(i=0; i<10; ++i);是不是上面那行C语言代码的执行效率低于下面的呢?只能说理论如此,实际上,现代C语言编译器已经足够聪明,它会根据上下文编译C语言代码。

编译器会根据上下文编译C语言代码
应该明白,i++ 和 ++i 的效率差异主要来自于处理 i++ 时,需要先保存 i 的当前值留作稍后使用。如果之后没有人使用 i 的当前值,也就是说没有C语言代码读取 i++ 的值,编译器实在没有必要保存 i 的当前值了,因此就会将这一步优化掉。
为了便于分析,我们编写下面这样的C语言代码:
int i = 0;
i++;
++i;
与上面的例子相比,区别在于在执行 i++ 时,没有人关心 i 的当前值了。查看这段C语言代码对应的汇编代码:

对应的汇编代码
显然,i++ 和 ++i 对应的指令是一模一样的,不再有执行效率上的差异。
小结
C语言中的 i++ 和 ++i 是有区别的,这就有可能带来效率上的差异。如果有代码关心 i++ 执行时的 i 当前值,程序在对 i 进行自加操作时,将不得不先保存 i 的当前值,而 ++i 就无需保存当前值,这就会带来效率上的差异。如果没人关心 i++ 的当前值。

热心网友 时间:2022-05-16 16:54

一直以来,++
--语法浪费了太多人的时间。说句实在话,++
--
在C语言中其实是一个很细节的语法,除了表达简练外,真的没有什么其它的好处了。
由于中国的C语言教程长期以来被谭浩强主宰,而谭又错误的把++
--作为一个C语言重点来教,并增加了一些难点,把本来很简单的语法,搞得复杂无比!
简单的来说,++i

i++,在单独使用时,就是
i=i+1。

a
=
++i,相当于
i=i+1;
a
=
i;

a
=
i++,相当于
a
=
i;
i=i+1;
如果实在搞不明白++
--怎么回事,那也不是什么天塌下来的事。
因为a=++i完全可以写成
i++;
a=i。
a=i++完全可以写成
a=i;
i++。
而且,这也是一种好的程序风格:++
--
语句如非特殊需要,请单独一行使用。

热心网友 时间:2022-05-16 16:55

i++

++i要是单独占一行的话,是没有区别的,都是将i的值加1.但是如果被嵌套在其他语句中是有区别的。
例如:i=
1;
if(i
++)
{
printf("%d",i)
;
//
这里仍然是i=1
}
//执行结束后
对i+1,这里i=2
if
(++i)
{
printf("%d",i)
//这里i=2
}
也就是i++,是使用i的值以后,再对i+1;而,++i是先进行i+1,然后再使用i的值。
C语言中,i , i,以及i--,--i,啥意思,如何区别,老是搞不清,高手支个招...

i就是普通的变量。i--意思是先带入原来的变量i的值运算,然后i自减一,下次用时i就变成i-1了 --i是先自减一,然后带入计算,就是说,当前你所算的式子上用的就是i-1。

在c语言中1&lt;&lt;i与i&lt;&lt;1的区别是什么

1&lt;&lt;i是把1左移i位,每次左移以为就是乘以2,所以1&lt;&lt;i的结果是1乘以2的i次方 i&lt;&lt;1就是把i左移一位,即i乘以2,假如i=5,最后结果就是5*2=10 至于为什么左移一位是乘以2,这是运算器内部机理,说起来就更多了,计算机做乘法运算的时候不是一个个的相加,而是用移位来实现的。&gt;&gt;这个符号...

c语言!!i和!i啥区别

!!i和!i---一定是false和true,或是true和false !!i==1-!i

i和i+有什么区别c语言

在C语言中,i和i+1之间有以下区别:作为变量,i和i+1具有不同的值。比如,当i被赋值为0时,i+1的值为1。i和i+1在计算机内存中的位置也不同。i+1的地址比i的地址高一个单位,单位通常是字节。i和i+1在参与数组的索引时,也有不同的含义。数组是由一系列相邻的存储单元组成的,每个存储单元...

C语言中。例如:I=0和I==0有什么区别啊?

I=0是一个赋值语句,就是把0赋值给变量I I==0是一个表达式,就是判断I的值是否等于0

c语言中i--,--i和-i--有什么区别

--i 是先执行i=i-1,然后再使用i的值, 这时的i 值就是表达式--i的值。i-- 是先使用i的值作为表达式i--的值,然后,执行i=i-1操作。include"stdio.h"void main(){int i=4,j,k;j=i--; //i先赋值给j,然后i在执行i=i-1;k=--i; //i先执行i=i-1,然后再赋值给;printf...

C语言中i&lt;5和i&lt;=4的区别

如果i为整型变量,没有区别,只有写法不同,没有逻辑上的区别 如果i为浮点数则有区别

c语言中的++ i和i++有什么区别呢?

在C语言中,`++i` 和 `i++` 都是自增操作,但它们在执行时有一些微妙的区别。1. `++i`:这被称为前缀递增操作符,它表示先将变量增加1,然后再使用变量的值。也就是说,变量会在表达式中被使用前就已经加了1。2. `i++`:这被称为后缀递增操作符,它表示先使用变量的值,然后再将变量...

c语言i++与i+的区别是什么?

1、赋值顺序不同 ++i是先加后赋值;i++是先赋值后加;++i和i++都是分两步完成的。因为++i是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i=a=b,即++i是一个左值;i++的后面一步是自增,不是左值。形象的理解可以是i++先做别的事,再自己加1,++i先自己加1,再做别的...

c语言中++i和i++有什么区别

在C语言中,`++i`和`i++`是两种不同的运算符,它们在操作数和结果上有一些区别。1. `++i`:这是一个前置自增运算符。它首先对变量i进行自增操作,然后再返回这个自增后的值。换句话说,`++i`首先返回的是变量i自增后的值,然后再将变量i的值加一。例如:int i = 5; int incremented...

e3e5和i 5i 7有啥区别 i尚和i酷有啥区别 单位矩阵i和e有啥区别 华为3e和3i有啥区别 nova5z和5ipro有啥区别 r系列和i系列cpu有什么区别 vivoz5跟z5x有啥区别 vivoz5i和vivoz5区别 i跟li有什么区别
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么养好四季海棠? 西安财神庙攻略,西安旅游攻略财神庙路线 漯河食品职业学院是几本 漯河食品职业学院是985还是211 做无痛人流的危害 地暖水压能保持多久 地暖水压维持时间有多长 海棠花开完花后该怎么处理 漯河食品职业学院为什么能升本 漯河食品职业学院质量检验系培养目标 漯河食品职业学院是谁建的 c语言 i++和++i什么区别? c语言++i和i++有什么区别? C语言,i--和--i有什么区别,怎么用? c语言中++i是什么意思? C语言 i是什么意思 C语言中的i++与++i的使用区别?举例说明 C语言i是什么意思 C语言中的 i! 是什么意思 女人做梦梦见自己结婚办喜酒给人家吃了没人来接亲? 做梦自己买房子办酒席是什么兆头? 梦见自己结婚办酒席,接亲来了新郎却没来,而且我不认识新郎,被*着结婚? 梦见自己结婚办酒席,但没看见新郎最后有人捣乱没办成? 梦到举办结婚喜宴预示着什么?_我就要办喜酒网 梦见自己订婚办酒席,什么意思? 秋天的第一杯奶茶是谁最先说的 秋天的第一杯奶茶是咋回事儿啊? 什么是秋天的第一杯奶茶 “秋天第一杯奶茶”男人可以不懂,但女人一定要懂,它的含义究竟是什么呢... 秋天第一杯奶茶什么意思? 秋天的第一杯奶茶是什么梗啊? i!在c语言中是什么意思 在c语言中i++代表什么 C语言 请问代码里面的i--,i++什么意思 C语言里面i 和 i有什么区别,不是很理解。 这C语言中I和j代表什么 c语言中i+是什么意思 C语言 int i 的i代表了什么 C语言中i++和++i有什么区别。 【中国农业银行】您尾号1278账户12月21日完成结息交易人民币16.18? 比如手机短信通知结息交易人民币是200元的话那明细查询利息也是200元吗? testflight测试ios应用无法安装是怎么回事? ios15.1无法安装此app因为无法验证其完整性 iphone软件安装失败什么原因 iOS无法安装怎么设置 把钱转出去了还能要回来吗? 怎么追回转账出去的钱? 网银转帐出去的钱,付款人能单方面把钱追回么 如何把转出去的钱追回来? 请问手机银行转出去的钱还能追回来吗? 支付宝转出的钱可以追回么