数据类型 | 子类型 | 修饰符 | 简写 | 长度 | 数值范围 | 类型变量定义 | 类型常量 |
整型数 | 有符号短整型数 | signed short int | short或int | 2字节 | -32768~32767 | int a, b; | 十进制数: 以非0开始的数;如:220, -560, 45900 八进制数: 以0开始的数;如:06; 0106 十六进制数:以0X或0x开始的数;如:0X0D, 0XFF, 0x4e 长整形数:整型常数后添加一个"L"或"l"字母, 如22L, 0773L, 0Xae4l |
有符号长整型数 | signed long int | long | 4字节 | -2147483648~2147483647 | |||
无符号短整型数 | unsigned short int | unsigned int | 2字节 | 0~65535 | |||
无符号长整型数 | unsigned long int | unsigned long | 4字节 | 0~4294967295 | |||
浮点型 | 有符号单浮点数 | float | float | 4字节 | 3.4x10-38E~3.4x10+38E | float a, f; | 例如: +29.56, -56.33, -6.8e-18, 6.365 1. 浮点常数只有一种进制(十进制)。 2. 所有浮点常数都被默认为double。 3. 绝对值小于1的浮点数, 其小数点前面的零可以省略。如:0.22可写为.22, -0.0015E-3可写为-.0015E-3。 4. Turbo C默认格式输出浮点数时, 最多只保留小数点后六位。 |
有符号双浮点数 | double | double | 8字节 | 1.7x10-308E~1.7x10+308E | double b; | ||
|
#include "stdio.h"
void main()
{
double a;
a=1.1;
int b = *(int*) & a;
printf("%d",b);
printf("%f",(double)10/3);
printf("%f",10/3)
}
运行以上代码,结果为-1717986918 3.333333 0.000000
printf是不定参数,要想打印正确值数据类型要一致,援引一段,“如果希望能得到正确的整数值,必须要求addr所在的地址是一个真实的int类型。但是当我们传入double时,实际上其内存布局和int完全不同,因此我们得不到需要的整数。”