C语言i++跟++i在for、while、if中的差异

以前一直以为是不一样的,但是在看演示发现for循环中i++跟++i结果是一样的,遂大吃一惊,打算重造一下。

总体而言,跟循环体的执行顺序有关。

首先For循环

为什么是一样的?这跟for循环执行的顺序有关。

for(表达式1;表达式2;表达式3)
{
   表达式4;
}

①执行表达式1(只执行一次)。

②执行表达式2,若为真,则执行表达式4,若为假,退出执行表达式3且退出循环体。

③若满足条件,继续执行表达式2,随后表达式4,最后执行表达式3,往复执行,直到不满足表达式2条件为止。

那既然在for循环中都是一样的结果,那为什么大多写++i?

i++性能更好。

原因是i++需要先保存i当前的值然后加1,也就是说需要一个临时变量转存。而i++省去了这一部分操作。

whiledo-while则是跟我们想法相同。

下列为两个代码块拼接而成。

int = 0;
while(i++<7) //需先判断是否满足括号里的条件,再增加,若满足则进入循环体
{
printf("%d", i);
}

while(++i<7)  //先增加再判断是否满足,若满足则进入循环体
{
printf("%d", i);
}

分别执行上下两部分代码。

发现上面部分结果是:1234567

下面部分结果是:123456

跟我们的想法相同。

if语句也跟我们想法相同

但是别忘记了就算不满足条件,判断后仍需要+1.

我们来验证一下

例如 以下程序输出结果是 6

main( ) {

int m=5;

if(m++>5)printf("%d\n",m); else printf("%d\n",m--); }

第三行的m--改成m时输出5;

#include <stdio.h>
   int main ()
   {
int m=5;
if(m++>=6)
    printf("%d\n",m);
    else 
    printf("%d\n",m--);
    printf("%d",m);
       return 0;
    } 

结果是6 5

说明在题目中if判断m不 大于5,随后m+1,之后来到了else语句中,printf函数先把m输出后再减一。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值