一个整型和浮点型问题。

数据类型 子类型 修饰符 简写 长度 数值范围 类型变量定义 类型常量
整型数 有符号短整型数 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完全不同,因此我们得不到需要的整数。”

你可能感兴趣的:(问题)