1. 基本数据类型

1.1 算术类型

类型 解释 说明 注意事项 本地字节数
short 有符号短整数 完整形式signed short intsingedint可以省略 最左边一位表示符号,0为正数,1为负数 2
unsigned short 无符号短整数 完整形式unsigned short intint可以省略 全部位占满 2
int 有符号整数 完整形式signed intsinged可以省略 最左边一位表示符号,0为正数,1为负数 4
unsigned int 无符号整数   全部位占满 4
long 有符号长整数 完整形式为signed long intsingedint可以省略 最左边一位表示符号,0为正数,1为负数 8
unsigned long 无符号长整数 完整形式为unsigned short intint可以省略 全部位占满 8
long long 无符号长长整数 完整形式为signed long long intsingedint可以省略 C99特有 8
unsigned long long 有符号长长整数 完整形式为unsigned long long intint可以省略 C99特有 8
char 字符 实质是“小整数”(可能比短整数占用字节更少) 分为charsinged charunsigned char。使用单引号标记常量,比如'A'为65) 1
_Bool 布尔型整数 实质是无符号整数 只能赋值0或1,赋值_Bool类型变量为非零值会导致赋值为1 1
float 单精度浮点数     4
double 双精度浮点数     8
long double 扩展精度浮点数     16
  • 强制编辑器处理常量为长整数(十进制、八进制和十六进制),1135L;强制处理为无符号,1135U;混合使用,1135ULUL顺序和大小写不重要。 C99中增加了ll或者LL后缀,强制long long int型整数,可以与uU连用。避免无符号和有符号整数混用,特别是无符号和有符号整数比较,会产生意想不到的后果

  • 强制编辑器处理常量为单精度浮点数,11.3f11.3会被认为是double型;强制为双精度,11.3L或者11.3l(这里看出使用L更好,因为l会被误认为数字1)。

  • 强制类型转化表达式的一般形式为:(int) floatNumber。C语言把(type)视为一元运算符,所以其等级高于二元运算符。

  • 类型定义一般形式为:typedef int Newint;,注意结尾的。区别与使用宏定义类型,函数体内定义的typdef变量在函数体外无法使用,而宏可以作用于任何对应位置。

  • sizeof运算符一般形式为:sizeof(type),比如sizeof(long int)计算int类型占用多少个字节。sizeof表达式的类型是size_t(无符号整数),所以安全的方法是强制转换为unsigned long型,比如(unsigned long) sizeof(int)。括号不是强制需要,加上括号防止因为优先级不同而引起歧义。可以应用与常量、变量或者表达式。