目录
1. C基本类型变量
char/short/int/long/long long 以及其对应的无符号类型,short/double等。
基本类型 | 输出格式符 |
---|---|
char | %c, %d, %u |
short | %hd |
int | %d |
long | %ld |
long long | %lld |
unsigned char | %c, %d, %u |
unsigned short | %hu, %ho, %hx |
unsigned int | %u, %o, %x |
unsigned long | %lu, %lo, %lx |
unsigned long long | %llu, %llo, %llx |
float | %f |
double | %lf |
在类型转换中,根据待转换的类型划分,可分为对有符号类型的转换和无符号类型的转换,对应的转换规则为符号扩展和零扩展。
2. 符号扩展
即,对于要扩展的量为有符号数,扩展存储位数的方法。
2.1 规则一:
在新的高位字节使用当前当前最高有效位即符号位的值进行填充。
例1:
char a = 0xff; // 有符号值为 -1,二进制为 1111 1111,其中最高位为符号位
short b = a; // b的有符号值为 -1,在内存中存储的值为 1111 1111 1111 1111
例2:
char a = 1; // 有符号值为 1,二进制位 0000 0001,其中最高位为符号位
short b = a; // 有符号值为 1,在内存中存储的值为 0000 0000 0000 0001
2.2 规则二:
对于同一长度的数据类型中有符号与无符号数的相互转化,直接将内存中的数据赋给要转化的类型,数值大小会发生变化。
例3:
char a = 0xff; // 有符号值为 -1,二进制为 1111 1111,其中最高位为符号位
unsigned char b = a;