布尔类型:非真即假
c语言中!0即为真
系统默认宏定义:
#define YES 1 //YES代表1
#define NO 0 //NO代表0
//注意:宏定义后面是没有“ ; ”的
宏定义,一般用于大型项目,或者在工程中常用的一些数据或者接口,我们使用宏定义可以理解为把接口重新起一个名字来代替结构或者数据,这样在使用时直接使用新名字即可
关系运算符
- > >= < <= == !=
- 主要用于比较运算,比较的结果只有真假两种情况,结果值用BOOL类型变量存储
- 判断两个数是否相等,用==,而判断两个字符串是否相等,不能用==
逻辑运算符
- &&(逻辑与):一假即假,同真则真;关键字(并且,且,同时)
- ||(逻辑或):一真即真,同假则假;关键字(或者,或)
- !(逻辑非):将表达式结果取反
- 逻辑与和逻辑或的短路现象:&&——有假为假;||——一真为真
sizeof()
sizeof():用于C语言中判断数据类型或者表达式长度符;是运算符,不是函数,在编译时起作用,而不是在运行时起作用。
运行结果:
char型常量的存储问题
sizeof(‘a’)
——>先找到’a’的ASCII码值 97
——>把ོ97按照ོint类型进行ོ 00000000 00000000 00000000 01100001
ch = ‘a’;
——>97
——>把97转换为2进制 01100001 一个字节
——>把一个字节存储到内存中
一个字节的范围:
0 - 127 用作常见字符的ASCII码
程序的三种结构
- 顺序结构:顺序依次执行语句
- 分支结构:通过进行一个判断在两个可选的语句序列之间选择执行
- 循环结构:在满足某个条件时反复执行一个语句序列
if语句三种形式
- 程序执行时,看到if则进入条件表达式判断条件表达式是否成立,成立则打印{ }中语句,否则不打印
if(条件表达式)
{
语句1;
}
- 程序执行时,看到if则进入条件表达式判断条件表达式是否成立,成立则打印{ }中语句1,否则打印{ }中语句2
if(条件表达式)
{
语句1;
}
else
{
语句2;
}
- 程序执行时,看到if则进入条件表达式1判断条件表达式1是否成立,成立则打印{
}中语句1,否则进入条件表达式2判断条件表达式2是否成立,成立则打印{ }中语句2,否则打印{ }中语句3
if(条件表达式1)
{
语句1;
}
else if(条件表达式2)
{
语句2;
}
else
{
语句3;
}
条件运算符(三目运算符)
- 条件表达式?表达式1:表达式2;
- 当条件表达式为真时,整个表达式的值是表达式1的值
- 当条件表达式为假时,整个表达式的值为表达式2的值
//三个数比大小
int a,b,c,max;
printf("请输入三个整数:\n");
scanf("%d %d %d",&a,&b,&c);
max = a > b ? a : b;
max = max > c ? max :c;
printf("%d\n",max);
枚举类型
- 一组有符号名称的整型常量,一一列举所有状态,所有可能的结果
- 枚举属于构造类型
- 定义:enum 枚举名 {枚举值表};
- 目的:提高程序可读性
- 作用:将人能看懂的标识符与计算机能看懂的数字建立对应关系
switch语句
通过判断整形表达式的值,来决定执行哪个分支
switch(整型表达式){
case 值1:{语句1; break;}
case 值2:{语句2; break;}
...
case 值3:{语句n; break;}
default:{语句n + 1;break;}
}
- case后的值1,值2……等只能是整型常量或整型常量表达式,不能为变量
- 整个default语句都可以舍掉
- 多个case可以运行一个语句块
- case中多条语句时需要用{ }括起来
- break:用于跳出分支或循环,执行下一语句