鱼C论坛

 找回密码
 立即注册
查看: 3879|回复: 8

一个挺有趣的问题。

[复制链接]
发表于 2013-1-31 00:44:57 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Utend 于 2013-1-31 00:50 编辑
  1. #include <stdio.h>void main()
  2. {
  3. float f = 5.75;
  4. printf("(int)f=%d,f=%f\n",(int)f,f);
  5. }
复制代码
先贴代码,这是鱼C视频里面出现过的一个简单程序。
这段代码的运行结果是
(int)f=5,f=5.750000
但是如果把printf语句改为:printf("(int)f=%f,f=%f\n",(int)f,f);
结果就会变成:(int)f=0.000000,f=0.000000
这是为什么?求解答
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-31 01:00:58 | 显示全部楼层
假如你再这样输入一下:printf("(int)f=%f,f=%f\n",f,(int)f); 你就知道什么原因了!有这种想法是好的,可是解决上面还有点欠缺。。 提示:printf()函数是右运算
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-31 01:14:36 | 显示全部楼层

那能不能理解为在数值传递时因为数据类型的不相符导致数据出错?
其实我想知道的是,为什么强制类型转换后的f以浮点型输出会变成0.000000.
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-31 01:15:30 | 显示全部楼层
84561475 发表于 2013-1-31 00:59
唉......其实这个问题很简单
你改的那一行%f儿你后面又用(int0f,编译器那你没办法.只好将它化为0,你又用了 ...

但是强制类型转换后,f最多就变成5,那这么说以浮点型输出不是应为5.000000么?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-31 01:30:29 | 显示全部楼层
  1. #include <stdio.h>
  2. void main()
  3. {
  4. float f = 5.75;
  5. printf("(int)f=%f\n",(int)f);
  6. printf("%f\n",f);
  7. }
复制代码
其实主要在于printf()函数这里。。。。
QQ截图20130131012916.png
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-31 01:33:28 | 显示全部楼层
Utend 发表于 2013-1-31 01:15
但是强制类型转换后,f最多就变成5,那这么说以浮点型输出不是应为5.000000么?

其实不是的,你以后会了解到,这个现在就不是这样子了,因为你把float型强制转换成了int 这个编译器就把它看作了int,你用%f输出就是0,
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-31 02:02:37 | 显示全部楼层
Cfree 发表于 2013-1-31 01:33
其实不是的,你以后会了解到,这个现在就不是这样子了,因为你把float型强制转换成了int 这个编译器就把它 ...

噢噢,谢谢了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-31 16:57:22 | 显示全部楼层
Mark up 一下,留个印

                               
登录/注册后可看大图























                               
登录/注册后可看大图

防辐射服有用吗
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-31 20:58:08 | 显示全部楼层

哥们别光谢谢,解决了就给个最佳答案!
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-8 16:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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