博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C/CPP-数据类型

Posted on 2023-03-12 09:52  乔55  阅读(22)  评论(0编辑  收藏  举报

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在内存中所占的比特位数不同,其规定的默认的有效位数也不同