0 简介
1、数据类型分类:
- 整数:
char
、short
、int
、long
、long long
- 浮点数:
float
、doubel
、long doubel
- 逻辑:
bool
- 指针
- 自定义类型
2、各类型的区别:
- 名称不同;
- 输入/输出时的格式化:%d、%ld、%lf
- 表达的数据范围:
char
<short
<int
<float
<double
- 内存中所占据的大小
- 内存中的表达形式:二进制数(补码)、编码
3、sizeof
运算符
- 给出某个类型或变量在内存中所占据的字节数,如
sizeof(int)
、sizeof(i)
sizeof
输出的转换说明最好选取%lu(unsigned long
C89中最大的无符号整型)。C99中可使用更长的%zu。- 静态运算符。其结果在编译时就决定了,
sizeof()
括号里的运算不会被执行。
例如:
int a = 6;
printf("sizeof(a+1.0)前:a = %d\n",a); //查看a的值
printf("sizeof(a) = %ld\n",sizeof(a)); //int占4个字节
printf("sizeof(a+1.0) = %ld\n",sizeof(a + 1.0)); //double占8个字节
printf("sizeof(long double) = %ld\n",sizeof(long double));//long double占16个字节
printf("sizeof(a+1.0)后:a = %d\n",a); //查看a+1.0的运算是否执行
输出结果:
最后a = 6,可见程序过程中sizeof(a+1.0)
括号中的运算并未被执行。
- 注意:
sizeof
表达式的类型是size_t
(一种无符号整型),C89中最好将其强制类型转换为已知类型再显示,如int sizeof(表达式)
或unsigned long(表达式)
。但在C99中可直接显示,使用转换说明%zu。如:
printf("%zu\n", sizeof(int) );
一、整型
- 整型无法表示无穷大
inf
,会编译出错。只有浮点数可以
1、整型的内存大小
char
:1字节(1byte = 8bit)short
:2字节int
:取决于编译器(CPU),通常意义是“1个字”(2个字 = 4byte = 32bit)long
:取决于编译器(CPU),通常意义是“1个字”long long
:8字节
int