|
Posted on
2023-03-12 09:52
乔55
阅读( 22)
评论()
编辑
收藏
举报
char
- char的最小尺寸为8bit,一个char的大小与机器字长一样
- unsigned char; // 可表示范围是\([0,2^{8}-1]\)
- char; // 可表示范围是\([-2^{7},2^{7}-1]\)
- 我们使用的char是否带符号是未定的,由我们使用的编译器决定
- 算术表达式中尽量不要使用char,它在不同机器上2种情况都可能
C语言中的整数
- 这张图片是什么意思?
- C90标准编译器遇到的值处于某个范围内时,该值被认为某种类型
- C99标准编译器遇到的值处于某个范围内时,该值被认为某种类型
- \(2^{31}=2147483648\)
- \(-2147483648 < 2147483647\),编译器编译时,将负号与数值是分开处理的
- 只有确定好左右2边比较数的数据类型,才能够进行比较
- 2147483648为\(2^{31}\),在C90中被编译器解析了unsigned int,而2147483647为\(2^{31}-1\)被解析为int,在一个表达式里,左边解析为无符号数,右边解析为带符号数,则整个表达式是按照无符号数进行运算的。
- 若
int i = -2147483648 ,则i<2147483647 左右2边都是带符号数,很显然,按照带符号数的比较规则,左边为负数,右边为正数,该比较表达式的值为true
float与double
- C++标准指定了一个浮点数有效位数的最小值,大多数编译器实现了更高精度
- 通常float以一个字32位表示,double以2个字64位表示
- float与double在内存中所占的比特位数不同,其规定的默认的有效位数也不同
|