c语⾔之switch语句的⽤法及注意事项
关于C语⾔中我们做判断的时候⼀般是会想到if else,常见的if else的写法为:
if(表达书)
{}
else if(表表达式)
{}
else
{}
当出现更多的if else嵌套的时候通常会使我们的代码变的较为繁琐,使得我们在观看⾃⼰的代码的时候容易讲逻辑给混淆,故此次介绍⼀下switch的⽤法,switch的⽤法在代码中的运⽤⼴度没有if else 较强,但是在多个判断中可起到很关键的作⽤本次以leet第860题柠檬⽔零为例⼦进⾏说明,下⾯两段代码:
bool lemonadeChange(int* bills, int billsSize){
int mon[2]={0};
for(int i=0;i<billsSize;i++)
{
switch(bills[i])
{
case 5:{mon[0]++;break;};
case 10:
{
mon[0]--;
mon[1]++;
break;
}
case 20:
{
if(mon[1]>0)
{
mon[1]--;
mon[0]--;
}
else mon[0]-=3;
break;
}
}
if(mon[0]<0) return false;
}
return true;
}
bool lemonadeChange(int* bills, int billsSize){
int mon[2]={0};
for(int i=0;i<billsSize;i++)
{
int temp=bills[i]-5;
if(temp>0)
switch的用法c语言{
if(temp>5)
{
if(mon[1]!=0&&mon[0]!=0)
{
mon[0]--;
mon[1]--;
}
else if(mon[0]>=3)
mon[0]-=3;
else return false;
}
else
{
if(mon[0]>0)
{
mon[1]++;
mon[0]--;
}
else
return false;
}
}
else
mon[0]++;
}
return true;
}
上述两段代码分别为使⽤if else 与switch的代码的实例,两者在运⾏内存和速度上相差⽆⼏,但是switch的看起来更整洁,逻辑清晰。
注意:
1、在switch中有⼀点需要明确那就是在break的引⽤的问题,switch的操作中⾸先将case后的表达式与switch中括号的内容进⾏匹配,如果两者相等,则执⾏该case及下⾯的所有代码,知道执⾏完毕switch中的所有代码,⽽我们引⽤switch的⽬的只是需要执⾏其中的⼀个case,然后跳出switch,故在
每个case的末尾需加⼊break将此次的switch跳出,若利⽤continue跳出case,依然会执⾏下⾯的case。
2、case 后⾯必须是⼀个整数,或者是结果为整数的表达式,但不能包含任何变量。
eg:
case ‘A’: printf("…"); break; //正确,字符和整数可以相互转换。
case a: printf("…"); break; //错误,不能包含变量
3、default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执⾏。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论