C Primer Plus: 第三章 数据和C
数据
- 如果数据是常量,编译器一般通过用户书写的形式来识别类型。
- C99标准添加的关键字:_Bool _Complex(复数) _Imaginary(虚数)
- 从技术层面看,char是整数类型。因为char类型实际上存储的是整数而不是字符。有些编译器把char实现为有符号类型,这意味着char可表示的范围是-128-127。而有些编译器把char实现为无符号类型,那么范围是0-255.
- 一些类型名保证所表示的类型一定是至少有指定宽度的最小整数类型,这组类型组合被称为最小宽度类型,如int_least8_int是可容纳8位有符号数值的类型中宽度最小的类型的一个别名。如果某系统的最小整数类型是16位,可能不会定义int8_t类型。尽管如此,该系统仍然可以使用int_least8_t类型,但可能把类型实现为16位整数类型。
- C99 C11定义了一组可使计算机达到最快的类型集合,称为最快最小宽度类型
- C99 定义了最大的有符号整数类型intmax_t可存任何有效的有符号整数。类似有无符号整数类型uintmax_t.
- C标准规定,float类型必须至少能表示6个有效数字。注意不是小数点后6位。double为10位有效数字。
- 编译器假定浮点型常量是double类型的精度。没有后缀通常是double类型。
- 在函数传参时,会把float用double表示。
- C语言有3种复数类型:float_Complex double_Complex long double_Complex. 例如float_Complex 类型的变量应包含两个float类型的值,分别表示复数的实部和虚部。
- 类似地有3中虚数类型。
- sizeof的返回类型是size_t(%zd)
不同类型大小
- int(%d): 32位 一般为一个机器字长
- short int(%hd): (简称short) 占用的存储空间可能比int类型少
- long int(%ld):(简称long) 占用的存储空间可能比int类型多
- long long int(%lld):(简称long long) 64位
- unsigned int(%u):(简称unsigned)
- unsigned long int(%lu)
unsigned long long int(%llu)
char:8位