概述
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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复