一个整型和浮点型问题。

来源:互联网 发布:知画诬陷小燕子虐文 编辑:程序博客网 时间:2024/05/22 03:20

数据类型子类型修饰符简写长度数值范围类型变量定义类型常量整型数有符号短整型数signed short int short或int2字节-32768~32767int a, b; 十进制数:  以非0开始的数;如:220, -560, 45900
八进制数:  以0开始的数;如:06; 0106
十六进制数:以0X或0x开始的数;如:0X0D, 0XFF, 0x4e
长整形数:整型常数后添加一个"L"或"l"字母, 如22L, 0773L, 0Xae4l
有符号长整型数signed long intlong4字节-2147483648~2147483647 无符号短整型数unsigned short intunsigned int2字节0~65535 无符号长整型数unsigned long intunsigned long4字节0~4294967295 浮点型有符号单浮点数floatfloat4字节3.4x10-38E~3.4x10+38Efloat 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+308Edouble 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完全不同,因此我们得不到需要的整数。”

原创粉丝点击