字符类型

编码

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

CDay03
需要记忆的:

转义序列

字符转义序列

CDay03

数字转义序列

字符处理函数

CDay03

读写字符类型

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

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

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

布尔类型

C99引入布尔类型,定义在<stdbool.h>中

布尔值转换为整数

整数转换为布尔值

类型转换

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

隐式类型转换

CDay03

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

显式类型转换

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

示例:

// 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);

CDay03

sizeof运算符

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

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

typedef

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

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

注意:

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

总结

CDay03

发表回复