第三章 条件判断

鹅鸭不知春去尽,争随流水趁桃花。

条件运算符

condition ? expression1 : expression2

条件成立执行expression1, 条件不成立执行expression2

1
2
x = y > 7 ? 25 : 50;
//如果y大于7,x就等于25,否则x等于50

运算符的优先级

  • 所有比较运算符的优先级都低于二元算术运算符
  • 二元逻辑运算符的优先级低于比较运算符
  • 因此,先执行算术运算,再比较,再执行逻辑运算

switch语句

先来个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
int main (){

int ticket_number;
scanf("%d", &ticket_number);
switch(ticket_number){
case 35:
printf("You win first prize!");
break;
case 122:
printf("You are in luck - second prize.");
break;
case 78:
printf("You are in luck - third prize.");
break;
default:
printf("Too bad, you lose.");
break;
}

return 0;
}

每个case的statement的最后会有个break

如果不添加这个break,则会执行下一个case中的语句,这个时候如果下一个case中也没有break就接着执行下一个case中的语句,以此类推。

case 的顺序可以任意,default不一定是最后一个case。

测试字符的函数

注意:使用的时候别忘了加上头文件 <ctype.h>

按位运算符

下面这些运算符类似于前面介绍的逻辑运算符,但是实际上与逻辑运算符完全不同

例如:&是按位与运算,如果对应位分别相与然后得到结果

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>

int main(){

int x = 13;
int y = 6;
int z = x & y;

printf("%d\n", z); // 4


return 0;
}

<< 是左移,左移后面补零

>> 是右移,右移前面补零

例子:

1
2
3
4
5
6
7
8
9
10
int value;
int shiftcount;

printf("请输出需要移位的整数:");
scanf("%d", &value);

printf("请输出需要移位的位数:");
scanf("%d", &shiftcount);

printf("移位后的结果是:%d", value >> shiftcount); // 1

按位运算符,也可以使用下面的形式:

value << = 4;

上述的语句等价于:

value = value << 4;