1,关于Bool
● Bool 类型
#include <stdbool.h>
之后就可以使用 bool 和 true、false
● Bool 就是 布尔型变量 ,类似于 float、double 等
布尔型,用作逻辑型判断。
● Bool 取值 false 和 true
false 可以取值 0 但是 true 可以有很多种, 并非只有 1 .
例如:
#include <stdio.h>
#include <stdbool.h>
int main()
{ bool a =5>3;
bool b=true;
bool c=false;
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",c);
return 0;
}
● 最后输出的结果是 1 1 0
● bool 的结果只能是 true 和 false
● printf 可以输出 false 为 0,但是 对于 true 的除了 1 的其他结果输不出来,
也没办法 输出 true 和 false 。
2 逻辑运算
概念:● 逻辑运算是对逻辑量进行的运算,结果只有 1 或 0
**
难点★★★ ● 逻辑量是关系运算或逻辑运算的结果。**
逻辑运算符:! && ||
如果 a 是 true 结果就是 false
!———→ 逻辑非———→!a————→如果 a 是 false 结果就是 true
如果 a 和 b 都是 true
&&———→逻辑与———→a&&b———→结果就是 true 否则就是 false
如果 a 和 b 有一个是true,结果就是 true
||————→逻辑或———→a || b———→ 如果 a 和 b 两个都是 false,结果为 false
3 如何表示数学中的区间
如:x∈(4,6)或 x∈[4,6]
即:x>4&& x<6 x>=4&&x<=6
如;判断一个字符是否是大写字母? 即: c >= ‘A’ && <=‘Z’ ? ???? ???? ??
趣味案例:
#include <stdio.h>
int main()
{
int a=‘B’;
if(a>=‘A’&&a<=‘Z’)
{printf(“OK\n”,a);}
else{printf(“NOT!\n”,a);
}
return 0;
}
重难点
特殊的案例: !age<20
● 逻辑运算符的优先级小于比较运算符的优先级
●因为单目优先级大于双目所以 !age 会先计算,
!age 的结果只能是 0或 1
所以正确的形式应该是 !(age<20)
3 总结:关于优先级
一、单目运算符>双目运算符
二、算术运算符>比较运算符>逻辑运算符
4.逻辑运算符的优先级
!>&&>||
5.汇总:
优先级
1 () 从左到右
2 !和单目+、- 从右到左
3 * / 从左到右
4 % 从左到右
5 + - 从左到右
6 < <= 从左到右
> >=
7 == != 从左到右
8 && 从左到右
9. | | 从左到右
10. 复合运算符 从右到左
即:括号>单目>算术>比较运算符>逻辑运算符>复合运算符
● 单目:!+ -
● 算术:* / >% >+.-
●比较运算符:> .>= ,< <=大于 == 1=
●逻辑运算符: !>&&>||
6.逻辑短路:
逻辑运算时自左向右进行的,如果左边的结果已经能够决定结果了,就不会再做右边的计算。
&&逻辑与的两边必须都成立
7.同样:对于 || 来说,如果左边是TRUE时,也不会在计算右边了。
8.小技巧:
复合运算符尽量不要写进逻辑运算式中,以免发生短路,
.9.条件运算符
通式:count = (count>20) ? count-10 :count+10;
解释:
● ?前面表示变量需要满足的条件,
● ?后面表示当变量满足条件时得到的结果。
●:(冒号) 后面是条件不满足时的结果。
等价于:
if(count>20)
count-10;
else
count+10;
● 条件运算符的优先级高于赋值运算符的优先级,但是比任何运算符的优先级都要 低。
●条件运算符的动作是自左向右的。
对于复杂的关系,最好还是用判断函数而不用条件运算符
条件运算符是C语言留下来的古老的方法。。
10 逗号在C语言中也是一个运算符,即
逗号运算符。
逗号运算符:● 用来连接两个表达式。
● 以其右边的表达式的值作为它的结果。
● 逗号运算符的优先级是最低的 (比赋值运算符还低)。
● 组合方式:自左向右。
● 左边式子先计算,右边的留下来作为逗号运算的结果。
用处:
在 For 循环函数中使用,利于放多个计算式。
如 For(i=o,j=10;i<j ; i++ ; j--)
●利于在for函数中放多个表达式。
●无论逗号运算式的结果为多少 对 for函数的计算无影响。
对逗号运算式中的赋值,初始化等运算也没有关系。
**
11.switch–case
常量:常数、常数计算的表达式。
通式: switch(控制表达式)
{ case 常量:
语句
break
case 常量:
语句
break
。。。。。。。。。
。。。。。。。。。
default:
语句
break
● 控制表达式只能是整数型的结果
● 常量可以是常数,也可以是常量计算的表达式。(C99独有)
如:const int RMB=30;
case RMB
基本概念和注意事项
● switch 语句可以看作是一种基于计算的转换。
● 计算完控制表达式后,程序会跳转到匹配的case
●在执行玩分支中的最后一跳语句后,如果后面没有 break 就会顺序执行到下面
的case里, 直到遇到下一个 break 或 switch
● case 常量 后面跟的是冒号。
● 一般情况下,每个 case 和 default 后面 都加一个 break,特殊情况除外。
● case 只是一个路口,并不能阻止句子执行,break 可以。
-
.经典案例:
#include <stdio.h>
int main()
{ int days;
scanf("%d",&days);
switch (days){
case 1:
printf(“第一天\n”);
break ;
case 2:
printf(“第二天\n”);
break;
default:
printf(“啊,什么!\n”);
break;
}
return 0;
}