请教一个运行结果以及格式输出的问题

skyaspnet 2009-10-26 12:32:07
程序如下:


void main(void)
{
float me = 1.1;
float you = 1.1;
int i = -1;
for(i++;;)
{
if(me==you)
printf("I love U %i",i);
else
printf("I hate U %i",i);
++i;
if (i%2)
break;
printf("%i",i);
}
getchar();
}


没有理解明白 me 和 you两者为什么不相等,明明都是1.1啊?

另外:看到 %i 这种格式输出,有哪位大侠可以解释一下吗?

谢谢!
...全文
91 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
clc0925 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 denelf 的回复:]
计算机在存储浮点数据时 和 整形不同 具体百度一下怎么存储的.
所以浮点用 == 比较..没意义..
一般是
两个float变量a,b
然后
fabs(a-b) <1e-6  //后面的1e-6代表需要到达的小数精度

至于 %i
恕我才疏学浅..没遇到过..
也许是按 int 输出..

[/Quote]
晕死,看来你没学好!
denelf 2009-10-26
  • 打赏
  • 举报
回复
计算机在存储浮点数据时 和 整形不同 具体百度一下怎么存储的.
所以浮点用 == 比较..没意义..
一般是
两个float变量a,b
然后
fabs(a-b)<1e-6 //后面的1e-6代表需要到达的小数精度

至于 %i
恕我才疏学浅..没遇到过..
也许是按 int 输出..
clc0925 2009-10-26
  • 打赏
  • 举报
回复
首先,并没有说me和you会不相等,你也看到了啊,他们是相等的,所以执行出来的结果是I love U 0
其次,%i和%d的功能都是输出带符号的十进制整型数,两者可以替换...
skyaspnet 2009-10-26
  • 打赏
  • 举报
回复
继续等待第一个问题
skyaspnet 2009-10-26
  • 打赏
  • 举报
回复
刚查到了

%i

格式化输出 有符号10进制整数

参考资料:http://blog.csdn.net/xuefu2008/archive/2009/10/09/4645026.aspx

希望对大家有帮助
liangyonglou 2009-10-26
  • 打赏
  • 举报
回复
一定是疏忽了
AiXed 2009-10-26
  • 打赏
  • 举报
回复
哦这样啊
skyaspnet 2009-10-26
  • 打赏
  • 举报
回复
感谢大家,我试了,是自己代码弄错了,很感谢您们!
TimeforL 2009-10-26
  • 打赏
  • 举报
回复
很难想象会出现:I HATE YOU ;
等待高手的高见。
pmerOFc 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 skyaspnet 的回复:]
引用 3 楼 clc0925 的回复:
首先,并没有说me和you会不相等,你也看到了啊,他们是相等的,所以执行出来的结果是I love U 0
其次,%i和%d的功能都是输出带符号的十进制整型数,两者可以替换...


运行结果是 I hate U
[/Quote]

什么编译器?
clc0925 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 skyaspnet 的回复:]
引用 3 楼 clc0925 的回复:
首先,并没有说me和you会不相等,你也看到了啊,他们是相等的,所以执行出来的结果是I love U 0
其次,%i和%d的功能都是输出带符号的十进制整型数,两者可以替换...


运行结果是 I hate U
[/Quote]
我是在VC下运行得出的结果!
段正瑞 2009-10-26
  • 打赏
  • 举报
回复
wintc 下是相等的啊!运行结果是I Love U 0.
pcboyxhy 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 skyaspnet 的回复:]
引用 3 楼 clc0925 的回复:
首先,并没有说me和you会不相等,你也看到了啊,他们是相等的,所以执行出来的结果是I love U 0
其次,%i和%d的功能都是输出带符号的十进制整型数,两者可以替换...


运行结果是 I hate U
[/Quote]

你是turboC吧,这种情况理应是相等的
a = 1.1 跟 a = 0.2+0.9 不是同一回事
skyaspnet 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 clc0925 的回复:]
首先,并没有说me和you会不相等,你也看到了啊,他们是相等的,所以执行出来的结果是I love U 0
其次,%i和%d的功能都是输出带符号的十进制整型数,两者可以替换...
[/Quote]

运行结果是 I hate U
denelf 2009-10-26
  • 打赏
  • 举报
回复
被谭感染了..-_-|||

69,377

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧