BOOL类型
1 unsigned long size = sizeof(BOOL(其他类型...)); 2 printf("size = %lu\n",size); 3 4 unsigned long intSize = sizeof(int); 5 printf("intSize = %lu\n", intSize);
关系运算符
用来进行两个数比较
关系运算符的结果有两种,真或假,用BOOL类型变量来接收
1> > <
1 int a = 5, b = 4, c = 3; 2 BOOL r3 = a < b < c; // 先运算 a < b,再和c比较 3 printf("r3 = %d\n", r3);
2> >= <=
符合>或者=任何一个,结果为真
BOOL r4 = 5 >= 5; printf("r4 = %d\n", r4);
3> ==, !=
= 用来赋值,== 用来判断两个数是否相等
1 BOOL r6 = 5 == 4; 2 printf("r6 = %d\n", r6); 3 4 BOOL r7 = 10 != 5; 5 printf("r7 = %d\n", r7);
逻辑运算符
逻辑与:&& 逻辑或:|| 逻辑非 !
逻辑表达式的结果只有两种,真或假,用BOOL类型的变量来接收
逻辑与, 并且,同时
表达式: 表达式1 && 表达式2
运算规则:表达式1和表达式2同时为真,整个逻辑表达式的结果为真,否则为假(一假即假)
1 int a = 10; 2 int b = 20; 3 BOOL r1 = (a < b) && (b == 20); 4 printf("r1 = %d\n", r1);
短路现象:表达式1的结果为假,整个逻辑表达式的结果为假,表达式2将不再执行
1 BOOL r3 = (a > b) && (a++); 2 printf("r3 = %d\n", r3); 3 printf("a = %d\n", a);
逻辑或 或者,不强调同时
表达式: 表达式1 || 表达式2
运算规则:表达式1或者表达式2任何一个为真,整个逻辑表达式的结果为真,只有当表达式1和表达式2同时为假,整个逻辑表达式结果为假(一真即真,全假则假)
1 int a = 10; 2 int b = 20; 3 BOOL r1 = (a > b) || (b == 20); 4 printf("r1 = %d\n", r1); 5 6 BOOL r2 = (b < a) || (a != 10); 7 printf("r2 = %d\n", r2);
短路现象:当表达式1的结果为真,整个逻辑表达式的结果为真,表达式2将不再执行
1 BOOL r3 = (a < b) || (a++); 2 printf("r3 = %d\n", r3); 3 printf("a = %d\n", a);
逻辑非 取反
BOOL r4 = NO; BOOL r5 = !r4; printf("r5 = %d\n", r5);
if语句
第一种形式
if (条件表达式) {
分支语句;
}
条件表达式为真,执行分支语句,如果为假,执行分支语句下面的内容
练习:定义一个变量age,从键盘输入值,如果age大于等于18,输出”你已经成年了“。
1 int age = 0; 2 printf("请入年龄:"); 3 scanf("%d", &age); 4 if (age >= 18) { 5 printf("你已经成年了"); 6 }
第二种形式
if (条件表达式) {
语句1;
} else {
语句2;
}
如果条件表达式为真,执行语句1,否则执行语句2
练习:输入一个年份,判断该年份是否是闰年?如果是闰年,则输出该年是闰年,否则输出该年不是闰年。
(能被400整除) || ((能被4整除) && (不能被100整除))
1 int year = 0; 2 printf("请输入一个年份\n"); 3 scanf("%d", &year); 4 5 BOOL r1 = year % 400 == 0; 6 BOOL r2 = year % 4 == 0; 7 BOOL r3 = year %100 != 0; 8 9 if (r1 || (r2 && r3)) { 10 printf("是闰年\n"); 11 } else { 12 printf("不是闰年\n"); 13 }
第三种形式
if (条件表达式1) {
语句1;
} else if (条件表达式2) {
语句2;
} else {
语句4;
}
练习: 从键盘输入一个字符,如果是数字打印 this is digital,如果是大写字母,打印 this is capital letter,如果是小写字母,打印 this is letter,如果是其他字符,打印 other。
1 char ch = 0; 2 printf("请输入一个字符\n"); 3 scanf("%c", &ch); 4 5 if (ch >= '0' && ch <= '9') { 6 printf("this is digital\n"); 7 } else if (ch >= 'A' && ch <= 'Z') { 8 printf("this is capital letter\n"); 9 } else if (ch >= 'a' && ch <= 'z') { 10 printf("this is letter\n"); 11 } else { 12 printf("other\n"); 13 }
条件运算符 ? :
条件表达式? 表达式1 : 表达式2;
如果条件表达式为真,执行表达式1,否则执行表达式2
5、switch...case分支
switch (整型或者字符型的表达式) {
case 值1(整型或者字符型的常量): {
语句1;
break;
}
case 值2: {
语句2;
break;
}
......
default: {
语句3;
break;
}
先执行switch后的表达式,根据表达式的值查找想要的case分支,并执行分支语句
default:默认分支,如果没有找到对应的分支,执行default分支
break:结束当前的case分支
练习:从控制台输入1~4,对应打出春夏秋冬的英文词。
1 int value = 0; 2 printf("请输入1~4的整数\n"); 3 scanf("%d", &value); 4 5 switch (value) { 6 case 1: 7 printf("Spring\n"); 8 break; 9 case 2: 10 printf("Summer\n"); 11 break; 12 case 3: 13 printf("Autumn\n"); 14 break; 15 case 4: 16 printf("Winter\n"); 17 break; 18 default: 19 break; 20 }