字符类型编码

char类型采用ASCII编码,占1个字节,只用了7位(最高位是0),能表示128个字符。


需要记忆的:

  • 空字符 ‘\0’ = 0
  • ‘ ‘ = 32
  • ‘0’ = 48
  • ‘A’ = 65
  • ‘a’ = 97

转义序列字符转义序列

数字转义序列

  • 八进制:以 \ 开头,后面最多接三个八进制数
  • 十六进制:以 \x 开头,后面接十六进制数

字符处理函数

读写字符类型

  1. scanf/printf,配合%c来读写,%c匹配一个字符

  2. getchar()/putchar()
    int getchar(void) 函数从 stdin 上读取下一个可用的字符,并把它返回为一个整数。这个函数在同一个时间内只会读取一个单一的字符。您可以在循环内使用这个方法,以便从屏幕上读取多个字符。
    int putchar(int c) 函数把字符输出到 stdout,并返回相同的字符。这个函数在同一个时间内只会输出一个单一的字符。您可以在循环内使用这个方法,以便在屏幕上输出多个字符。

getchar和putchar的效率远高于printf和scanf,如果只是读写字符数据,建议使用getchar和putchar。

布尔类型

C99引入布尔类型,定义在中

布尔值转换为整数

  • false –> 0
  • true –> 1

整数转换为布尔值

  • 0 –> false
  • 非0 –> true

类型转换

1、为什么要进行类型转换?
答:计算机硬件做计算时,要求操作数有相同的位数(相同类型)
2、什么时候会发生类型转换?
答:给定的类型和需要的类型不一致时,就会发生类型转换
3、如何进行类型转换?
答:隐式类型转换、显式类型转换

隐式类型转换


有符号数与无符号数进行运算时,有符号数会隐式转换为无符号数,故不要将有符号数和无符号数一起参与运算!

显式类型转换

格式:(目标类型) 表达式;

示例:

// 1.计算浮点数的小数部分double d = 3.14159;double fraction = d - (int)d;// 2.提高代码可读性float f = 3.14f;//...int i = (int)f;    //注意这里发生了类型转换,可能会出现问题// 3.对类型转换进行更精确的控制int dividend = 4, divisor = 3;double quotient = 0;quotient = (double)dividend/divisor;// 4.可以避免溢出long long a = 24 * 60 *60 * 1000;long long b = (long long)24 * 60 *60 * 1000 * 1000 * 1000;printf("b/a = %lld\n", b / a);

sizeof运算符

作用:计算某一类型数据所占的字节数
格式:sizeof(类型)

注意:sizeof是在编译阶段进行运算的

typedef

作用:给类型起别名
格式:typedef 类型 别名;

为什么要给类型起别名?
答:提高代码可读性、提高代码可移植性

注意:

#define int BOOL  //预处理后就没有别名了,编译器无法给出精确的报错信息typedef int BOOL;

总结