CangS心得 BOOL,if,switch语法的运用
Bool是一种数据类型
它只有0和1两个值
系统通过预编译把0编译成NO把1编译成YES
所以咱们在工程中一般只看见yes和no
printf("%d",WL);
声明一个Bool变量初值为NO
bool是C语言中使用的
BOOL是OC语言中使用的
BOOL b =YES;
printf ("%d",b);
定义两个变量比较大小 并且打印比较结果
int number1 =5;
int number2 =10;
// 关系运算符 > >= < <= == !=
// 如果成立返回YES也就是1反之NO也就是0
// 关系运算符优先级
//(> >= < <= 同级关系) 大于 (== !=)
BOOL result = number1 > number2;
printf("%d",result);
注意 ==是判断两边是否相等 是双等号
练习1 == 3 >1 相当于1 == (3 >1)
声明BOOL变量接收返回结果
BOOL result =1 == 3 >1;
printf("%d",result);
逻辑运算符 && || !
&& 一假则假(必须两边全是真的 整个逻辑表达式才是真的)
|| 一真则真(必须两边全是假的 整个逻辑表达式才是假的)
! 对结果进行取反
终极口诀:非零即真
逻辑与短路现象
逻辑与如果前面的为假 那么后面的就不执行了这就是 短路现象
int a =5;
int b =10;
BOOL result = a > b && a++;
逻辑或的短路现象
逻辑或如果前面的为真 整个表达式就为真那么后面的就不去执行了 这就是短路现象
int a =5;
int b =10;
BOOL result = a < b || a++;
程序的三种结构
顺序结构:顺序 执行语句.
分支结构:(重点)通过进行一个 判断来选择执行哪个语句
循环结构:
if语句写法
/*
if (判断语句){
要执行的语句
}
如果判断语句为真就执行大括号中的语句
如果判断语句为假就跳过大括号中的语句(不执行)
*/
需求:定义两个整形变量 如果a>b打印 a比b大
int a =5;
int b =10;
if(a < b){
printf("a比b大");
}
练习:控制台输入一个字符,如果输入的是m,则输出为男性,否则什么都不输出.
声明一个字符型变量
char a ='0';
printf("请输入:\n");
// 输入函数
scanf("%c",&a);
// 进行判断
if(a =='m'){
printf("男性");
}
练习:如果从控制台输入一个字符,如果输入的是m,则输出男性,否则输出女性,那怎么实现呢?
char a ='0';
printf("请输入:\n");
// 输入函数
scanf("%c",&a);
// 进行判断
if(a =='m'){
printf("男性");
}
if(a !='m'){
printf("女性");
}
if语句的第二种形式
/*
if(判断条件){
语句1
}else{
语句2;
}
不管if语句是哪种形式首先要看的 就是判断条件
条件成立执行语句1
条件不成立执行else后面大括号的部分语句2
*/
char a ='0';
printf("请输入:\n");
scanf("%c",&a);
if(a =='m'){
printf("男性\n");
}else{
printf("女性\n");
}
如果条件成立就执行条件后紧跟着的大括号
如果条件不成立就执行else后面的大括号
终极口诀:分支结构中 只执行一个分支中的语句
练习3:输入一个年份,盘短该年份是偶是闰年
能被几整除就相当于对几取余等于0
int year =0;
printf("请输入一个年份\n");
scanf("%d",&year);
// 定义一个BOOL类型变量来接收一下
BOOL result1 = (year %4 == 0 && year %100 != 0);
BOOL result2 = (year %400 ==0);
if(result1 || result2){
printf("闰年");
}else{
printf("不是闰年");
}
if语句的第三种形式(级连式)
/*
if (判断条件1){
语句1:
}else if(判断条件2){
语句2;
}else{
语句3;
}
首先判断条件1
不成立不执行语句1
继续判断条件2
不成立不执行语句2......
如果前面全部成立 else后面又没有判断条件那么执行 else后面大括号中的语句
*/
从键盘输入一个字符,如果是数字 打印 this is digital,如果是大写字母,打印 this is capital letter,如果是小写字母,打印this is letter,如果是其他字符,打印 other
实际上输入一个字符 就相当于 输入一个0-255的数
char c ='0';
printf("请输入一个字符\n");
scanf("%c",&c);
if(c >='0' && c <= '9'){
printf("是数字");
}elseif(c >= 'A' && c<='Z'){
printf("是大写");
}elseif (c >= 'a' && c <='z') {
printf("是小写");
}else{
printf("other");
}
条件表达式 (三目运算符)
判断条件 ?返回值1 : 返回值2;
如果判断条件成立就返回返回值1 反之返回返回值2
需求:定义两个整形变量 打印比较大的一个(利用条件表达式)
int a =5;
int b =10;
int max = a > b ? a : b;
printf("max = %d",max);
提高代码阅读性
if(a > b) {
printf("%d",a);
}else{
printf("%d",b);
}
枚举类型
/*
定义枚举类型
enum 枚举类型名字{
枚举值的列表
};
*/
需求:创建一个季节枚举枚举的值分别为 春夏秋冬
枚举的值默认是0开始依次递增
也可以指定枚举的值
enum season{
sprint,// 注意 枚举值要用逗号隔开
summer,
autom,
winter
};
switch语句
/*
switch (整型表达式可以是数字或者字符) {
case 值1(数字或字符):
执行的语句1
break; 跳出整个switch语句
case 值2(数字或字符):
执行的语句2
break; 跳出整个switch语句
default:
如果前面的case都没有匹配上就执行default后面的语句
break;
}
*/
练习:从控制台输入1~4,对应打出春夏秋冬 的英文单词
定义一个枚举提高代码阅读性
enum season{
// 枚举的值默认是从0开始
spring = 1,
summer,
automn,
winter,
};
int a ;
printf("请输入1~4号字符\n");
scanf("%d",&a);
switch(a){
case spring:
printf("spring");
break;
case summer:
printf("summer");
break;
case automn:
printf("autom");
break;
case winter:
printf("winter");
break;
default :
break;
}
1.defalt可以省去
2.defalt位置可以变 只要所有case没有匹配成功,就会去执行default后面语句
在case里面第定义变量是要加一个大括号或者直接假一个大括号 这样可以提高代码的可读性
多个case可以执行一个语句块
break;
}