5.1 逻辑表达式
- 关系运算符:输出结果为0或1,有> < >= <= (关系运算符的优先级低于算术运算符)
- 判等运算符:主要有==和 !=(优先级低于关系运算符)
- 逻辑运算符:输出结果为0或1☟
5.2 if语句
基本格式为:if(表达式)语句
- 表达式两边的圆括号是必须的,但是不要分号。
5.2.1 复合语句
如果需要在if语句中使用多条语句,就需要加上花括号。
if (line_num == MAX_LINES){
line_num = 0;
page_num++;
}
5.2.2 else子句
基本格式为:if(表达式)语句 else 语句
- if语句和else语句 都是以分号结尾
5.2.3 条件表达式
基本格式为:表达式1 ? 表达式2 : 表达式3
- C语言中唯一一个三元运算符
- 计算表达式1的值,如果此值不为0,那么计算表达式2的值,如果为0,结果为表达式3
- 除了赋值运算符,条件运算符的优先级低于所有的运算符
5.3 switch语句
// 基本格式为
**switch (表达式) {
case 常量表达式 : 语句
...
case 常量表达式 : 语句
default : 语句 }**
- 一个case后面只能有一个常量表达式
- 多个case可以共同使用一个常量表达式,也可以放在同一行
- 不一定要求default分支,如果没有匹配,会直接传给switch后面的语句
break语句的作用
- 执行break语句非导致程序跳出switch语句,继续执行switch后面的语句
- 如果没有break语句,会跳转到下一个分支
- TEST
/*用户输入两个日期,显示哪一个日期更早*/
#include <stdio.h>
int main(){
int d1,m1,y1;
int d2,m2,y2;
printf("Enter the first date: ");
scanf("%d/%d/%d",&d1,&m1,&y1);
printf("Enter the second date: ");
scanf("%d/%d/%d",&d2,&m2,&y2);
int ans,f = 0,s = 1;
ans = (y1 == y2) ? ((m1 == m2) ? ((d1 < d2) ? f : s) :((m1 < m2) ? f : s)) : ((y1 < y2) ? f : s);
if (ans) printf("earlier is %02d/%02d/%02d ",d2,m2,y2);
else printf("earlier is %02d/%02d/%02d ",d1,m1,y1);
}