观察以下代码结果,为什么?
![](https://i-blog.csdnimg.cn/blog_migrate/8af9f567aa58d4a6c98f2334cb959cb9.png)
原因是因为:运算数类型整形除整形结果还是整形,计算机中float和double都是IEEE754标准 1记录浮点数的,以上代码中得到的值是3,转化为IEEE754标准值就是0.0000000
解决办法1:a和b任意一个强制类型转化
//解决办法1:
printf("%f", a/(float)b);
解决办法2:a和b任意一个声明成float类型2
//解决办法2:
float a = 10;
int b = 3;
printf("%f", a/b);
计算机中最小存储单位是bit位
简单介绍一下C语言中所规定的变量类型
类型 | 关键字 | 字节长度 | 精度范围 |
---|---|---|---|
字符数据类型 | char | 1 | -128 ~ 127 |
短整型 | short | 2 | -2^16 ~ 2^16-1 |
整形 | int | 4 | -2^32 ~ 2^32-1 |
长整型 | long | 4-8 3 | -2^32 ~ 2^32-1 |
更长的整形 | long long | 8 | -2^64 ~ 2^64-1 |
单精度浮点数 | float | 4 | 负数:-3.402823E38 ~ -1.401298E-45、正数:1.401298E-45 ~ 3.402823E38 |
双精度浮点数 | double | 8 | -1.7 * 10^-308 ~ 1.7 * 10^308 |
long在有的编译器中是4在有的编译器中是8并且再有的编译器中没有,所以C语言long和long long两种并存是为了兼顾开发兼容性
计算机中存储单位
1byte = 8bit
1KB = 1024byte
1MB = 1024KB
1Gb = 1024MB
1TB = 1024Gb