1.BOOL布尔类型
是一种非真即假的数据类型,布尔类型的变量只有YES和NO两个值
在C语言中,非0即为真
//
标准:
C89
没有布尔类型,
C99
有
//C 工程支持 C89 , OC 工程支持 C99
//BOOL 包含两个值:真( YES )、假( NO )
BOOL r1 = YES ;
BOOL r2 = NO ;
// 布尔类型使用 %d 输出, YSE : 1 NO : 0
//#define YES 1 #define NO 0
// 计算机已经定义
printf ( "r1 = %d, r2 = %d\n" , r1, r2);
//C 工程支持 C89 , OC 工程支持 C99
//BOOL 包含两个值:真( YES )、假( NO )
BOOL r1 = YES ;
BOOL r2 = NO ;
// 布尔类型使用 %d 输出, YSE : 1 NO : 0
//#define YES 1 #define NO 0
// 计算机已经定义
printf ( "r1 = %d, r2 = %d\n" , r1, r2);
//bool包含两个值:真(true)、假(false)
2.关系运算符
#pragma mark-----
关系运算符
> >= < <= == !=
/*
1
、用于两个数的比较
2 、关系运算符的结果只有两种:真、假。使用 BOOL 类型变量接收。
3 、由常量、变量、关系运算符组成的表达式,称为关系表达式
*/
// 大于、小于
BOOL r3 = 5 > 3 ;
printf ( "r3 = %d\n" , r3);
BOOL r4 = 5 > 4 > 3 ; //5>4 结果为真, 1<3 结果为假
printf ( "r4 = %d\n" , r4);
//>= <=
BOOL r5 = 5 >= 5 ;
printf ( "r5 = %d\n" , r5);
//== 等于 != 不等于
//= 赋值运算符
// 浮点数不能使用 == 比较是否相等,小数在存储时存在精度问题。整型和字符型可以使用。
BOOL r6 = 7 == 8 ;
printf ( "r6 = %d\n" , r6);
BOOL r7 = 7 != 8 ;
printf ( "r7 = %d\n" , r7);
2 、关系运算符的结果只有两种:真、假。使用 BOOL 类型变量接收。
3 、由常量、变量、关系运算符组成的表达式,称为关系表达式
*/
// 大于、小于
BOOL r3 = 5 > 3 ;
printf ( "r3 = %d\n" , r3);
BOOL r4 = 5 > 4 > 3 ; //5>4 结果为真, 1<3 结果为假
printf ( "r4 = %d\n" , r4);
//>= <=
BOOL r5 = 5 >= 5 ;
printf ( "r5 = %d\n" , r5);
//== 等于 != 不等于
//= 赋值运算符
// 浮点数不能使用 == 比较是否相等,小数在存储时存在精度问题。整型和字符型可以使用。
BOOL r6 = 7 == 8 ;
printf ( "r6 = %d\n" , r6);
BOOL r7 = 7 != 8 ;
printf ( "r7 = %d\n" , r7);
//
计算机在存储字符时,本质上存储的是对应的整型数
//
字符和整型数的对应关系,依据
ASCII
编码规范
char a = 'A' ;
printf ( "%c\n" , a);
printf("%d\n", a);
3.逻辑运算符
#pragma mark-----
逻辑运算符
/*
逻辑与 &&
公式: 表达式 1 && 表达式 2
运算规则:只有表达式 1 和表达式 2 同时为真,逻辑与表达式的结果才为真。 一假全假。
*/
int a = 10 ;
int b = 20 ;
// 表达式 1 a<b, 结果为真;表达式 2 本,结果为假
//(a < b) && (b == 3) 的结果为假
BOOL r1 = (a < b) && (b == 3 );
printf ( "r1 = %d\n" , r1);
BOOL r2 = (a == 3 ) && (b > a);
printf ( "r2 = %d\n" , r2);
BOOL r3 = (a > 5 ) && a++;
printf ( "r3 = %d, a = %d\n" , r3, a);
// 短路现象
// 当表达式 1 结果为假时,逻辑与表达式的结果已经确定为假,所以表达式 2 不再执行
BOOL r4 = (b < 5 ) && b++;
printf("r4 = %d, b = %d\n", r4, b);
/*
逻辑或 ||
公式:表达式 1 || 表达式 2
运算规则:表达式 1 和表达式 2 ,只要有一个结果为真,逻辑或表达式结果为真。 一真即真。
*/
int a = 10 ;
int b = 20 ;
BOOL r1 = (a < b) || (b == 3 );
printf ( "r1 = %d\n" , r1);
BOOL r2 = (a == 3 ) || (b < a);
printf ( "r2 = %d\n" , r2);
// 短路现象
BOOL r3 = (b > 5 ) || b++;
printf ( "r3 = %d, b = %d\n" , r3, b);
// 逻辑非 ! 取反
BOOL r4 = !(a > b);
逻辑或 ||
公式:表达式 1 || 表达式 2
运算规则:表达式 1 和表达式 2 ,只要有一个结果为真,逻辑或表达式结果为真。 一真即真。
*/
int a = 10 ;
int b = 20 ;
BOOL r1 = (a < b) || (b == 3 );
printf ( "r1 = %d\n" , r1);
BOOL r2 = (a == 3 ) || (b < a);
printf ( "r2 = %d\n" , r2);
// 短路现象
BOOL r3 = (b > 5 ) || b++;
printf ( "r3 = %d, b = %d\n" , r3, b);
// 逻辑非 ! 取反
BOOL r4 = !(a > b);
printf("r4 = %d\n", r4);
/*
(大概)
运算符的优先级
() > ! > 算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符
(大概)
运算符的优先级
() > ! > 算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符
*/
if语句
1.if
(<#condition#>) {
<#statements#>
} else {
<#statements#>
} else {
<#statements#>
}
//
输入一个
年份,判断该年份是否是闰年?如果是闰年,则输出该年是闰年,否则输出该年不是闰年
//
提示:闰年:能被
400
整除或者
(
能被
4
整除,但是不能被
100
整除
)
。
int
year =
0
;
printf ( " 输入一个年份: " );
scanf ( "%d" , &year);
//a % b == 0 a 能被 b 整除
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0 ) ) {
printf ( " 该年份是闰年 \n" );
} else {
printf ( " 该年份不是闰年 \n" );
}
2.
if
(<#condition#>) {
<#statements#>
} else if {
<#statements#>
} else if {
<#statements#>
} else {
<#statements#>
}
//
练习:从键盘输入一个字符,如果是
数字
打印
this is digital
,如果是大写字母,打印
this is capital letter
,如果是小写字母,打印
this is letter
,如果是其他字符,打印
other
。
char character = 0 ;
printf ( " 请输入一个字符 :" );
scanf ( "%c" , &character);
// 当条件控制在某个范围,使用 && || 这种结构,绝对不可以使用 a<b<c 这种连续结构
if (character >= '0' && character <= '9' ) {
printf ( "this is digital 数字 \n" );
} else if (character >= 'A' && character <= 'Z' ) {
printf ( "this is capital letter 大写字母 \n" );
} else if (character >= 'a' && character <= 'z' ) {
printf ( "this is letter 小写字母 \n" );
} else {
printf ( "other\n" );
char character = 0 ;
printf ( " 请输入一个字符 :" );
scanf ( "%c" , &character);
// 当条件控制在某个范围,使用 && || 这种结构,绝对不可以使用 a<b<c 这种连续结构
if (character >= '0' && character <= '9' ) {
printf ( "this is digital 数字 \n" );
} else if (character >= 'A' && character <= 'Z' ) {
printf ( "this is capital letter 大写字母 \n" );
} else if (character >= 'a' && character <= 'z' ) {
printf ( "this is letter 小写字母 \n" );
} else {
printf ( "other\n" );
}
switch语句
条件运算符
/*
?:
公式:条件表达式 ?表达式 1 :表达式 2
运算规则 : 条件表达式为真,执行表达式 1 ;条件表达式为假,执行表达式 2
*/
switch
/*
switch ( 整型或者字符型表达式 ) {
case 值 1: {
//case 后面的值是整型或字符型常量
语句 1
break;
}
case 值 2: {
//case 后面的值是整型或字符型常量
语句 2
break;
}
default:
break;
}
1 、如果表达式的值没有和任何一个 case 后面的值匹配成功,执行 default 分支。
2 、 break 语句的作用:结束当前 case 分支,并且结束 switch 语句。
*/
// 定义一个字符变量,设置初始值。如果字符变量是 m ,输出男性;如果字符变量是 f ,输出女性;其他输出未知。
char character = 'm' ;
switch (character) {
case 'm' : {
printf ( " 男性 \n" );
break ;
}
case 'f' : {
printf ( " 女性 \n" );
break ;
}
default :{
printf ( " 未知 \n" );
break ;
}
}
// 从控制台输入一个整数,输出对应的水果名称
//1- 苹果 2- 梨子 3- 桔子 4- 香蕉
int number = 0 ;
printf ( " 请输入一个整数 1 、 2 、 3 、 4 : " );
scanf ( "%d" , &number);
switch (number) {
case 1 : {
printf ( " 苹果 \n" );
break ;
}
case 2 : {
printf ( " 梨 \n" );
break ;
}
case 3 : {
printf ( " 桔子 \n" );
break ;
}
case 4 : {
printf ( " 香蕉 \n" );
break ;
}
default :
break ;
}
// 多个 case 可以运行同一个代码段
// 练习:按照考试成绩( ABCD )的等级,输出百分制分数段
//ABC :属于 >60 D :属于 <60
char level = 'A' ;
switch (level) {
case 'A' :
case 'B' :
case 'C' : {
printf ( " 输出 60 分以上 \n" );
break ;
}
case 'D' : {
printf ( " 输出 60 分以下 \n" );
break ;
}
default :
break ;
}
switch ( 整型或者字符型表达式 ) {
case 值 1: {
//case 后面的值是整型或字符型常量
语句 1
break;
}
case 值 2: {
//case 后面的值是整型或字符型常量
语句 2
break;
}
default:
break;
}
1 、如果表达式的值没有和任何一个 case 后面的值匹配成功,执行 default 分支。
2 、 break 语句的作用:结束当前 case 分支,并且结束 switch 语句。
*/
// 定义一个字符变量,设置初始值。如果字符变量是 m ,输出男性;如果字符变量是 f ,输出女性;其他输出未知。
char character = 'm' ;
switch (character) {
case 'm' : {
printf ( " 男性 \n" );
break ;
}
case 'f' : {
printf ( " 女性 \n" );
break ;
}
default :{
printf ( " 未知 \n" );
break ;
}
}
// 从控制台输入一个整数,输出对应的水果名称
//1- 苹果 2- 梨子 3- 桔子 4- 香蕉
int number = 0 ;
printf ( " 请输入一个整数 1 、 2 、 3 、 4 : " );
scanf ( "%d" , &number);
switch (number) {
case 1 : {
printf ( " 苹果 \n" );
break ;
}
case 2 : {
printf ( " 梨 \n" );
break ;
}
case 3 : {
printf ( " 桔子 \n" );
break ;
}
case 4 : {
printf ( " 香蕉 \n" );
break ;
}
default :
break ;
}
// 多个 case 可以运行同一个代码段
// 练习:按照考试成绩( ABCD )的等级,输出百分制分数段
//ABC :属于 >60 D :属于 <60
char level = 'A' ;
switch (level) {
case 'A' :
case 'B' :
case 'C' : {
printf ( " 输出 60 分以上 \n" );
break ;
}
case 'D' : {
printf ( " 输出 60 分以下 \n" );
break ;
}
default :
break ;
}