上海内贸网站建设,点评网站开发,苏州网站建设营销q479185700刷屏,网络小说网站建设#x1f680;#x1f680;#x1f680;大家觉不错的话#xff0c;就恳求大家点点关注#xff0c;点点小爱心#xff0c;指点指点#x1f680;#x1f680;#x1f680; 目录
#x1f430;数据类型的介绍
#x1f430;类型的意义
#x1f430;数据类型的基本归类… 大家觉不错的话就恳求大家点点关注点点小爱心指点指点 目录
数据类型的介绍
类型的意义
数据类型的基本归类
整形家族
浮点型家族
构造类型
整形在内存中的存储
大小端
关于有无符号字符类型和整形提升的经典题型 数据类型的介绍 内置类型 char 字符型 1字节 short 短整形 2字节 int 整形 4字节 long 长整形 8字节 long long更长整形 8字节 float 单精度浮点型 4字节 double 双精度浮点型 8字节 类型的意义 1.使用这个类型开辟内存空间的大小 2.如何看待内存的视角 数据类型的基本归类 整形家族 字符存储和表示的时候本质上使用的是ASCII值ASCII值是整数字符类型也归类到整形家族 char: unsigned charsigned charC语言并没有规定char就是 unsigned char取决于编译器(一般char就是 unsigned char) short: unsigned short [int](int可以省略)signed short [int](int可以省略) int : unsigned int signed int long : unsigned long[int](int可以省略)signed long[int](int可以省略) 浮点型家族 float double 以后会详细解读浮点型 构造类型 数组类型 int arr[10]的类型int [10],因此数组类型很多又称自定义类型 结构体类型 struct 关键字 枚举类型 enum 关键字 联合类型 unio 关键字 指针类型 int* pi
char* pc
float* pf
void* pv *空类型 void表示空类型通常用于函数的返回类型、函数参数、指针类型 整形在内存中的存储
一个变量的创建是需要开辟一段空间 原码反码补码 整数的二进制有三种表示形式原码反码补码 三种表示形式都有符号位和数值位符号位用0表示“正”1表示“负”而数值位正数的原、反、补都相同 负数的原码负数的反码就是在原码基础上符号位不变数值位按位取反负数反码1就是补码 int a20 00000000000000000000000000010100原码 00000000000000000000000000010100反码 00000000000000000000000000010100补码 int b-20 10000000000000000000000000010100原码 111111111111111111111111111111111111101011反码 111111111111111111111111111111111111101100补码 注对于整形来说数据存放在内存中的其实是补码 int a1; 补码00000000000000000000000000000001 int b-1; 原码10000000000000000000000000000001 反码1111111111111111111111111111111111111111110 补码1111111111111111111111111111111111111111111 int cab c的补码100000000000000000000000000000000这里是33位但是只能存储32位所以高位1丢弃 则c的补码00000000000000000000000000000000 所以c的原码00000000000000000000000000000000 大小端 含义 大端字节序把一个数据的低字节的数据存放在高地址处把高字节的数据存放在低地址处 小端字节序把一个数据的低字节的数据存放在低地址处把高字节的数据存放在高地址处 百度2015年工程师测试题 设计一个函数去判断大小端 #includestdio.h
int check_sys()
{int a0x01223302;return *(char*)a;
}
int main()
{if(check_sys()2){printf(小端\n);}else{printf(大端\n);}
} 关于有无符号字符类型和整形提升的经典题型 int main()
{char a-1;-1:原码10000000000000000000000000000001反码 11111111111111111111111111111110补码 11111111111111111111111111111111a发生截断补码11111111signed char b-1;unsigned char c-1; c发生截断补码11111111这里的最高位不是符号位printf(“a%d b%d c%d”,a,b,c);a发生整形提升原来的补码11111111现在的补码11111111111111111111111111111111现在的反码11111111111111111111111111111110现在的原码10000000000000000000000000000001所以a的值为-1c发生整形提升原来的补码11111111现在的补码00000000000000000000000011111111现在的原码00000000000000000000000011111111所以c的值为255
注意这里的a与b是一样的如果发生整形提升的时候如果是有符号数高位补符号位如果是无符号数高位补0这都是针对补码
} 标题 有符号char类型变量的取值范围-128(补码10000000)127 无符号char类型变量的取值范围0255 如果大家还有不懂或者建议都可以发在评论区我们共同探讨共同学习共同进步。谢谢大家