实现C语言分支结构,要学习关系表达式,逻辑表达式,以及语句
一、运算符
我们写代码设计程序就是为了知道计算机如何对数据进行加工处理,得到我们想要的结果。C语言通过提供运算符来支持我们对数据进行处理。
1.算术运算符
双目:表示有两个操作数
- 表达式:用运算符和括号将操作数连接起来的式子,例如:‘a' +'b' 、1+1 、a+b
- 运算符的优先级和综合性
- 类型转换(在一个运算符中,操作数的类型不同,通常计算机会将占用位小的数据类型转化为占用位多的数据类型——确保计算精度)例如:浮点数+整型=浮点数
注1:printf函数后面不仅可以放变量,数值,也可以直接放一个表达式
printf("整型输出:%d\n", 1+ 2.0);
注2:由于类型转换,因此在设置输出格式时需要注意,如果浮点数以整型的形式输出则会有错误结果。
#include <stdio.h>
2 #include <math.h>
3 int main()
4 {
5 printf("整型输出:%d\n",1 + 2.0);
6 printf("浮点型输出:%f\n",1+2.0);
7
8
9
10 return 0;
11 }
运行结果:
注3:除了计算机可以自动转换操作数的数据类型,自己可以强制转换操作数的数据类型
printf("整型输出:%d\n", 1+ (int)2.0);
注4:int(1.8)——将浮点数1.8转换为整数是直接去掉小数位,而不是四舍五入
2.关系运算符
- 关系运算符来比较两个数的大小关系
关系运算符得到的结果是一个逻辑值只有两个,一个真(1)一个假(0)
- 关系表达式:用关系运算符将两边的变量、数据或者表达式连接起来
1 < 2 a > b // 这里的a,b表示的是变量 'a' + 'b' <= 'c' //字符在编译系统中解释为十进制的ASCII码
3.逻辑运算符
需要同时对两个或者两个以上的关系表达式进行判断,需要用到逻辑表达式
- 逻辑表达式:,用逻辑运算符将两边的变量,数据或者表达式连接起来(结果0或者1)
4.短路求值
短路求值又称为最小化求值,是一种逻辑运算符的求值策略。只有当第一个运算数的值无法确定逻辑运算结果时,才最第二个操作数进行求值
#include <stdio.h>
2 int main()
3 {
4 int a = 3, b= 3;
5 (a=0) && (b=5);
6 printf("a = %d, b = %d\n", a, b);
7 (a=1) || (b=5);
8 printf("a = %d, b = %d\n", a, b);
9
10
11
12 return 0;
13 }
运行结果:
注:表达式一定会返回一个值,关系表达式和逻辑表达式返回的都是一个逻辑值,表达值为真,则返回1,表达值为假则会返回0
二.if语句
if语句括号里的表达式,只需要判断其值为1还是0
1.第一种
2.第二种
3.第三种
三.switch语句 (非常重要)
switch语句旁边的表达式,其算出来的值,判断其满足case后面的哪个表达式,如果都不满足,实行default
注:case后面的语句最后要加一个break;
1.悬挂else(会出bug)
#include <stdio.h>
2 int main()
3 {
4 char rain, free;
5 printf("是否有空(Y/N)");
6 scanf("%c",&free);
7 getchar();//可以读取空格等一个字符,这里相当于过滤掉空格
8 printf("是否下雨(Y/N)");
9 scanf("%c",&rain);
10
11 if(free == 'Y')
12 if(rain =='Y')
13 printf("记得带伞!\n");
14
15 else
16 {
17 printf("女神没空!\n");
18 }
19 return 0;
其运行结果为:
明显错误
else会与邻近的if匹配,因此所有的if else 要把大括号带好
2.等于号带来的问题
以下这个程序,运行结果会出错,因为if旁边的表达式里面等号相当于赋值,而非判断是否相等
if(a =17)
{
printf("正确");
}
else
{
printf("错误”);
}