C语言你不知道的事(2)

记录学习的第八天
今天还是分享一下C语言的一些比较愉快的知识点
在这里插入图片描述
1.
switch语句中break的重要性;
首先呢我们看一下代码:

int x;
scanf("%d",&x);
switch(x){
case 0:printf("red\n");break;
case 1:printf("white\n");break;
case 2:printf("blue\n");break;
default:printf("error");break;
}

这是一段再正常不过的swich语句;
如果我们把所有的break删掉,会出现什么情况呢;
是编译报错?
还是什么?
在这里插入图片描述

int x;
scanf("%d",&x);
switch(x){
case 0:printf("red\n");
case 1:printf("white\n");
case 2:printf("blue\n");
default:printf("error");
}

嗯哼哼
答案是编译可以正常通过;
如果我输入0;
在这里插入图片描述
并不是只输出red而是把所有的都给输出了;
至于原因,这回可能都知道吧。
哈哈哈,很简单吧;
在这里插入图片描述

if else 语句中
“悬挂”else引发的问题

好这次可能有点小坑了,不会像上个那么简单了;
话不多说,看代码;

int x=0,y=2;

if(x==1)
    if(y==2) printf("y=%d",y);
else{
    printf("x=%d",x);
}

printf("x+y=%d",x+y);

这道题的答案会是什么呢;
会不会是
x=0;
x+y=2;
恩。。。。。。如果你的答案是这个,恭喜你;
回答错误;
在这里插入图片描述
来看下答案;
在这里插入图片描述
咦这是为什么呢?
如果我把上面的代码稍微改动一下;
就一定懂了;

int x=0,y=2;

if(x==1){
    if(y==2) printf("y=%d",y);
    else{
    printf("x=%d",x);
    }
}
printf("x+y=%d",x+y);

在这里插入图片描述
啊……原来是这样,为什么会这样!
C语言中规定:
else始终与同一队括号内最近未匹配的if结合;
所以同学们写if else语句的时候一定要养成一个好的习惯
比如,
我写每个if else 语句不管内容多简单都加上括号,就是怕出错;
在这里插入图片描述
不对,是怕找错;
往往这种bug才是让你最难受的;
他编译连个警告都没有,哎运行出来就是不对;
在这里插入图片描述
好了,今天的分享到此结束,
美好的一天就此结束
end;

猜你喜欢

转载自blog.csdn.net/weixin_46726346/article/details/105956725