写在前面:
C语言是结构化程序设计语言,无非就包含以下三种结构:
- 顺序结构
- 选择结构
- 循环结构
除了这三种再没有其它的了,再要么就是互相嵌套.比如说循环里面有选择等等
而我们接下来要学习的就是分支语句和循环语句:
分支语句:
- if语句
- switch语句
循环语句:
- while循环
- for循环
- do while 循环
- go to循环
循环语句将在下一篇博客进行讲解,敬请期待....
首先究竟是什么的形式才可以称之为语句呢?
形如 printf("bit"); 1+2; 的语句,在C语言中由一个分号隔开的就是一条语句分支语句(选择结构)
选择困难可能是很大一部分人比较头疼的一件事,但是在日常的生活中处处都离不开选择.比如:早上几点起,去不去上课,上完课干什么饭.......都是选择.选择不仅仅体现在生活当中,在代码中体现的也是淋漓尽致,下面就让我们好好学习吧.
一.if语句if语句的三种格式:
if(表达式){ 语句; } if(表达式){ 语句1; }else{ 语句2; } if(表达式){ 语句1; }else if(表达式){ 语句2; }else{ 语句3; }
以第二种常用的形式解释一下:
如果表达式中的结果为真,则执行语句1,否则执行语句2. 有这么一句话是这样说的:世界上最远的距离就是,你在if语句,而我在else语句.
而又有很多同学会问到C语言中如何表示真假,什么情况下是真,什么情况下是假呢?这里我觉得很有必要去解释一下.
0表示假,非0表示真.
写一个简单的例子体验一下:
if(a == 1){ printf("hahan"); }else{ printf("hehen"); }
代码解释:当a的值等于1时则打印haha,否则打印hehe. 注意判断是否相等的时候需要使用双等于号,即==.
但是在刚学习C语言或者或者分支语句的时候,好多同学都不习惯带{}.这里的{}表示的是一个代码块.于是就会出现各种问题,和自己所想要的代码逻辑所违背.下面就写一个悬空else语句的例子.
if(a == 0) if(b == 2) printf("hahan"); else printf("hehen");
写下这么一段代码,其本身的逻辑应该是a == 0 且 b == 2时打印haha,a != 0则打印hehe的.
但是运行结果显然是没有任何输出的,是因为else语句遵循最近匹配原则,其真正的代码逻辑是这样的:
如果想要实现我们本身的逻辑,就应该加上{}.
除了上面这种情况,很多同学还会出现这样一种错误:写if-else语句时,包含多条语句时不加{}最终导致出现不可预见的错误.
int main() { int a = 0, b = 2; if (a == 1) printf("hahahan"); printf("hahahan"); else printf("hehehen"); printf("hehehen"); return 0; }
其实这段代码本身的逻辑应该是:如果a==1则打印两行hahaha,否则打印两行hehehe.
但是在实际的代码运行中就会出错.
由此可见,在写代码时{}最好都不要省略,避免出现一些不可预见的错误.
良好的代码风格同样是非常重要的,好的代码不是写的多么高端,而是具有很高的可读性,而不是只有自己可以很好的读懂.
二.switch语句switch语句也是一种分支语句,常常用于多分支的情况.
switch语句的格式:
switch(整形表达式){ 语句项; } 语句项则是一些case语句,如下: case 整形常量表达式: 语句;
需要注意的是:整形表达式和整形常量表达式.
整形表达式:必须是一个整形,字符或枚举类型.不能是浮点数或其它类型.
整形常量表达式:数据类型必须与整形表达式相同,且必须是常量或字面量.
switch语句中的break:在switch语句中,我们没法直接实现分支,搭配break使用才能实现真正的分支.
典型的一个例子就是:
int input = 0; scanf_s("%d", &input); switch (input) { case 1: printf("星期一n"); break; case 2: printf("星期二n"); break; case 6: case 7: printf("周末n"); break; default: printf("输入错误n"); break; }
break语句的实际效果就是把语句列表划分为不同的部分.
default字句其实就是相当于if-else语句中的else字句,但是它可以出现在语句列表的任何位置,但一般都是在最末尾.
编程好习惯:
- 在每一个case语句最好都加上break语句
- 在每一个switch语句中都放一条default语句,并且在后面再加上一个break语句.
而在平时我们使用switch语句时却会出现各种不可预见的错误,我们举几个比较典型的例子分析一下.
(1).case关键字与常量之间没有空格
(2).缺少break语句
上面的两个例子,我们可以得知: 如果case字句中没有break语句,则不跳出switch语句,而是继续向下运行,直至遇到break语句,或者执行完所有的case语句.
(3).switch语句嵌套缺少break语句
由此可以得知,嵌套的switch语句中的break只能跳出里面的switch,而继续执行外面的switch语句.
勤奋是你生命密码,能译出你一部壮丽史诗.加油,新生代农民工!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)