1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式(变量已经赋过值)
2.BOOL(布尔)数据类型: c语言中除了基本数据类型, 还有BOO数据类型, 以及一些其它的数据类型, 如自定义的结构体数据类型
BOOL数据类型是一种表示非真即假的数据类型, 布尔类型的变量只有YES和NO两个值. YES表示表达式结构为真, 反之, NO表示表达式结果为假(在c语言中, 认为非0即为 真), BOOL类型主要用于分支结构或循环结构中, 用于判断是执行if语句还是else语句, 或判断是否要执行循环体. (#define YES 1 计算机在识别时, YES就替换成 1, #define NO 0 计算机在识别时, NO就替换成 0)
3. 关系运算符: >, >=, <, <=, ==, !=
关系运算符主要用于比较运算, 比较的结果只有真假两种情况, 结果值用BOOL类型变量存储. 注意: 判断两个数是否相等, 用 == (双等号)
4. 逻辑运算符:&&(逻辑与), ||(逻辑或), !(逻辑非)
逻辑运算符组成的表达式, 结果也是非真即假.
&&: 运算符两边的表达式同时为真时, 整个逻辑表达式的结果才为真
||: 运算符两边的表达式同时为假时, 整个逻辑表达式的结果才为假
!: 将表达式的值取反. 如表达式的值为0(假)时,取反值为非0(真); 当表达式的值为非0(真)时, 取反为0(假)
5. 位运算符: &(按位与), |(按位或), ^(按位异或), ~(按位非)
//位运算符:
//按位与 &:同为1, 则为1, 否则为0, 用于给某一位进行清零
int a = 4 & 6;
printf("%d\n", a);
//按位 或 |:同为0, 则为0, 否则为1, 用于保留某一位
a = 4 | 6;
printf("%d\n", a);
//按位异或 ^:相同为0, 不同为1
a = 4 ^ 6;
printf("%d\n", a);
//按位非 ~:如果是一个有符号的数, 则二进制最高位代表符号位, 1 代表负数, 0代表正数
//数据在内存中存储时是以补码的形式存储, 正数的补码是正数本身, 负数的补码是绝对值取反加1
6. 一个字节代表 8 位二进制数
数据类型的取值范围:
a. 无符号:
char 0 ~ 2^8 - 1
short 0 ~ 2^16 - 1
int 0 ~ 2^32 - 1
b. 有符号:
char -2^7 ~ 2^7 - 1
short -2^15 ~ 2^15 - 1
int -2^31 ~ 2^31 - 1
*/
7. if...else...比较简单, 就不记了. switch...case分支结构
int number = 0;
printf("请输入一个分机号(801:教学部,802:咨询部,803:财务部,804:保卫科,805:市场部):\n");
scanf("%d", &number)
switch (number) {
case 801:
case 809://当number = 801 或 809 时输出的结果都是教学部
printf("教学部\n");
break;//break结束当前分支,退出switch,执行switch之后的语句
case 802://case后的表示必须是一个常量,或者是一个常量表达式
{int a = 10;}//如果在case分支中想要定义变量,一定要加上大括号
printf("咨询部\n");
break;
case 803:
printf("财务部\n");
break;
case 804:
printf("保卫科\n");
break;
case 805:
printf("市场部\n");
break;
//当没有找到(匹配到)对应的case分支时执行default语句
default:
printf("要找谁\n");
break;
}
注意:case后的表示必须是一个常量,或者是一个常量表达式. 如果在case分支中想要定义变量,一定要加上大括号