鱼C论坛

 找回密码
 立即注册
查看: 2003|回复: 2

s1e7课后作业

[复制链接]
发表于 2020-1-17 17:04:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Chan歪歪520 于 2020-1-17 17:08 编辑

请问为什么result类型是 double,为什么不可以是long long int?试验了一下 long long int ,运行后显示 为0,是为什么呢?
  1. #include <stdio.h>
  2. #include <math.h>

  3. int main()
  4. {
  5.         int i;
  6.         double result;
  7.         long long int temp;

  8.         scanf("%d", &i);

  9.         result = pow(i,5);
  10.         temp = pow(i,5);

  11.         printf("the result is : %.2f\n",result);
  12.         printf("temp is : %d\n",temp);

  13.         return 0;
  14. }
复制代码

结果:
  1. 128
  2. the result is : 34359738368.00
  3. temp is : 0

复制代码


我尝试将printf中%d改为%lld结果就对了,请问是为什么呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-17 17:28:57 | 显示全部楼层
本帖最后由 sunrise085 于 2020-1-17 17:31 编辑

因为%d输出是针对int类型的,所以只读4字节,而long long int 是8字节,需要用%lld输出。在使用%d输出的时候只读了4字节,你的编译器应该是小端存储模式,所以只读到了低4字节。你可以换一个数字试一下,就能够知道是不是只读到低4字节了。
我试了一下,输入1234.
  1. the result is : 2861381721051424.00
  2. temp is : 1494012192
复制代码

2861381721051424->A2A69590CD120
1494012192->590CD120
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-1-17 22:32:43 | 显示全部楼层
sunrise085 发表于 2020-1-17 17:28
因为%d输出是针对int类型的,所以只读4字节,而long long int 是8字节,需要用%lld输出。在使用%d输出的时 ...

啊了解啦,谢谢您!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 00:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表