【C语言学习笔记(慕课翁恺老师)】第四周:进一步的判断与循环

目录

一、逻辑类型和运算

1.bool

2.逻辑运算

例:

优先级的问题

短路

注意

3.条件运算符

4.逗号“,”运算符

二 、级联和嵌套的判断

1.else的匹配

else总是和最近的那个if匹配

建议

2.级联的if-else if

3.多路分支

switch-case

测试程序


一、逻辑类型和运算

1.bool

使用前要加头文件:

#include <stdbool.h>

2.逻辑运算

&&a和b都是true,结果为true;否则false。
||a和b有一个为true,结果为true;两个都是false,结果为false。

例:

x\in (4,6) 可以代码这样描述:

x > 4 && x < 6

判断一个字符c是否是大写字母? 可以用代码这样描述:

c >= 'A' && c <= 'Z'

优先级的问题

单目运算符优先级比双目运算符优先级高

优先级排序:!> && > ||

短路

逻辑运算是自左向右进行的,如果左边的结果已经能够决定结果了,就不会做右边的计算。

对于&&,左边是false时就不做右边了。

对于||,左边是true时就不做右边了。

注意

不要把赋值,包括复合赋值组合进表达式!

例如a==6 && b+=1是错误的。

3.条件运算符

count = ( count > 20 ) ? count - 10 : count + 10;
//            条件      条件满足时的值   条件不满足时的值

可以用程序来解释条件运算符的作用:

if ( count > 20 )
    count = count - 10;
else
    count = count + 10;

4.逗号“,”运算符

  • 优先级低于“=”,优先级最低。
  • 逗号的组合关系是自左向右,逗号运算的结果为逗号右侧表达式的值。
  • 在for中的使用:
    for ( i=0,j=10; i<j; i++,j--);

二 、级联和嵌套的判断

1.else的匹配

else总是和最近的那个if匹配

例如:

if (code == READY)
    if (count < 20 )
        print ("一切正常\n");
else
        print("继续等待\n");

建议

在if或else后面总是用{},即使只有一条语句的时候。

2.级联的if-else if

  • 表示分段函数  f(x)=\left\{\begin{matrix} -1; x<0 & \\ 0; x=0 & \\ 2x;x>0& \end{matrix}\right.
if ( x < 0 ) {
    f = -1;
} else if ( x == 0 ) {
    f = 0;
} else {
    f = 2 * x;
}
  • 建议单一出口

建议:

int f;
if ( x < 0 ) {
    f = -1;
} else if ( x == 0 ) {
    f = 0;
} else {
    f = 2 * x;
}
printf ("%d", f);

 不推荐:

if ( x < 0 ) {
    printf ("%d", -1);
} else if ( x == 0 ) {
    printf ("%d", 0);
} else {
    printf ("%d", 2*x);
}

  3.多路分支

   switch-case

switch (控制表达式){

case 常量 :

        语句

        .......

case 常量 :

        语句

        ....... 

default:

        语句

        .......

}                  

  • 控制表达式只能是整数型的结果 
  • 常量可以是常数,也可以是常数计算的表达式
  • break 跳出,否则顺序执行

测试程序

#include <stdio.h>
int main()
{
	int type;
	
	scanf("%d", &type);
	
	switch ( type ) {
		case 1:
		case 2:
			printf("你好\n");
			break;
		case 3:
			printf("晚上好\n");
		case 4:
			printf("再见\n");
			break;
		default:
			printf("啊,什么啊?\n");
			break;
	}
	
	return 0;
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值