我是靠谱客的博主 鳗鱼鸵鸟,最近开发中收集的这篇文章主要介绍switch中的i++与++i,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

for(语句1;语句2;语句3)

在上式for循环的语句3中,i++与++i都是在完成一次循环后执行,无论使用哪一种,输出结果都是一样的。因为i++是在使用当前值之后再+1,所以会需要一个临时变量来转储,而i++则直接+1,不存在这样的问题。所以在不使用release优化而使用debug版本的时候我们可以使用i++以提高性能。而在编译器优化后两者都一样。

而在switch中,i++与++i是否也是一样的呢?

为了展示验证程序运行中经过了哪些语句,我们在每一个case分支的输出语句中指出了程序经过的分支。

#include<stdio.h>
int main()
{    
int s=6;
switch(s++)
{ case 6:printf("n%d by case6",s);
  case 7:s+=2;printf("n%d by case7",s);
  case 8:printf("n%d by case8",s);
  case 9:s+=2;printf("n%d by case9",s);
}
printf("nresult = %d",s);
     return 0;
}

这里的是第一个程序的输出结果
由程序运行结果可以推测得知:
程序先进入到case 6,然后s自增1得到7,之后输出为7;
这之后没有break语句,各个case语句被依次执行,最终得到s=11。

#include<stdio.h>
int main()
{    
int s=6;
switch(++s)
{ case 6:printf("n%d by case6",s);
  case 7:s+=2;printf("n%d by case7",s);
  case 8:printf("n%d by case8",s);
  case 9:s+=2;printf("n%d by case9",s);
}
printf("nresult = %d",s);
     return 0;
}

此处为第二个程序的输出结果
由程序运行结果可以推测得知:
首先s自增1得到7,程序进入到case 7,之后输出为7;
这之后没有break语句,各个case语句被依次执行,最终得到s=11。

由实验结果,我们可以得知:switch (i++) 会先执行分支判断再自增;switch(++i) 会先自增再执行判断。

最后

以上就是鳗鱼鸵鸟为你收集整理的switch中的i++与++i的全部内容,希望文章能够帮你解决switch中的i++与++i所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部