C语言学习笔记(三): 选择结构程序设计
if语句
if(){}
if (a=1){printf("hehe");} //单独一个if
if(){}else{}
int a = 1, b = 2;
if (a == b) {
printf("haha"); //if else
}
else
{
printf("hehe");
}
if(){}else if(){}
int a = 1, b = 2;
if (a == b) {
printf("haha");
}
else if (a != b) //else if
{
printf("hehe");
}
switch语句
定义
switch
语句是一种选择语句,它允许根据变量的不同值来执行不同的语句
switch(表达式) //表达式的值应为整数类型(包括字符型)
{
case 常量1 : 语句1;break
case 常量2 : 语句2;break
⋮ ⋮ ⋮
case 常量n : 语句n;break
default : 语句n+1 //可以没有default标号,若没有与switch表达式相匹配的case常量,则不执行任何语句
}
使用实例
要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60~69分,D等为 60分以下。成绩的等级由键盘输入。
include <stdio.h>
int main()
{
char grade;
scanf("%c",&grade);
printf("Your score:");
switch(grade)
{
case 'A': printf("85~100\n");break; //break表示使流程转到switch末尾
case 'B': printf("70~84\n");break;
case 'C': printf("60~69\n");break;
case 'D': printf("<60\n");break;
default: printf("enter data error!\n"); //上面语句都不执行,则执行default
}
return 0;
}
关系运算符和表达式
关系运算符优先级
关系表达式
关系表达式是比较两个值的大小关系的表达式
- 关系表达式的值是一个逻辑值,即“真”或“假”
- 在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”
int main(){
int a = 3, b = 2, c = 1;
//因为“>”运算符是自左至右的结合方向,先执行“a>b”得值为1,再执行关系运算“1>c”,得值0,赋给f,所以f的值为0
int f = a > b> c ;
printf("%d", f); //输出0
}
逻辑运算符
运算符 | 举例 | 说明 |
---|---|---|
! |
!a |
如果a为假,则!a为真;如果a为真,则!a为假 |
&& |
a && b |
如果a和b都为真,则结果为真,否则为假 |
` | ` |
- “&&”和“‖”是双目运算符,要求有两个运算对象(操作数); “!”是单目运算符,只要有一个运算对象
- 优先次序:
!
>&&
=‖
, 即!
为三者中最高的 - 逻辑运算符两侧的数据类型可以是整型、字符型、浮点型
条件运算符
条件运算符由?
和:
两个符号组成, 它也被称为三目运算符, 因为要求由三个表达式, 也是C语言中唯一的三目运算符
使用语法如下所示, 若expression1 的值为真(非0),则表达式的结果为 expression2 的值; 如果 expression1 的值为假(0),则表达式的结果为 expression3 的值
expression1 ? expression2 : expression3
下图突出了条件运算符的使用效果