有个不太明白的问题。

止境 2011-04-20 11:50:47
为什么申明的是浮点型的变量输出结果应该是40.0吧?但却输出为0,这是怎么回事?

main()
{float a,f=104.0;
a=5/9*(f-32);
printf("%.0f",a);
getch();
}
...全文
142 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
nand库路泽 2011-04-25
  • 打赏
  • 举报
回复
编译环境直接将5/9取整了!!
p95635746 2011-04-25
  • 打赏
  • 举报
回复

[Quote=引用 12 楼 reactionaries 的回复:]


引用 2 楼 supermegaboy 的回复:
5/9这里的结果是0,整数除法的结果仍然是整数,简单去掉小数部分,而整数部分是实现相关的,可以取上整数也可以取下整数,你使用的编译环境是取下整数的,所以5/9的结果为0导致a为0。
[/Quote]
reactionaries 2011-04-25
  • 打赏
  • 举报
回复
顶[Quote=引用 2 楼 supermegaboy 的回复:]
5/9这里的结果是0,整数除法的结果仍然是整数,简单去掉小数部分,而整数部分是实现相关的,可以取上整数也可以取下整数,你使用的编译环境是取下整数的,所以5/9的结果为0导致a为0。
[/Quote]
lisong871121 2011-04-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dangde_1 的回复:]
我想问你一个问题,
char buf[20];

buf[0] = 0xFF; buf[1] = 0xD9;

if (buf[0] == 0xFF && buf[1] == 0xD9)
{
printf("OK");
} else {
printf("NO");
}

你认为能输出什么?如果你不借助编译器为你服务?

有时候有些问题容易疏忽,……
[/Quote]
显然输出no,buf是char类型的,范围-128~127,判断条件一个都不满足
我承认这种问题很容易忽略,我以前就干过这事^_^
wizard_tiger 2011-04-22
  • 打赏
  • 举报
回复
楼上都说清楚了,5/9结果为0乘以任何数都为0。
dangde_1 2011-04-20
  • 打赏
  • 举报
回复
我想问你一个问题,
char buf[20];

buf[0] = 0xFF; buf[1] = 0xD9;

if (buf[0] == 0xFF && buf[1] == 0xD9)
{
printf("OK");
} else {
printf("NO");
}

你认为能输出什么?如果你不借助编译器为你服务?

有时候有些问题容易疏忽,但一定要多想想,静下心来想想。
  • 打赏
  • 举报
回复
这……,很难看出来耶,谢谢前面大虾的赐教,以后会注意了
pathuang68 2011-04-20
  • 打赏
  • 举报
回复
因为5/9先等于0了。这么改:

int main(int argc, char* argv[])
{
float a, f=104.0;
a=5.0/9.0*(f-32);
printf("%f\n",a);
}
hongwenjun 2011-04-20
  • 打赏
  • 举报
回复
a=5.0/9.0*(f-32);
要这样写
Ronaldo9999 2011-04-20
  • 打赏
  • 举报
回复
把5/9改为5.0/9
飞天御剑流 2011-04-20
  • 打赏
  • 举报
回复
5/9这里的结果是0,整数除法的结果仍然是整数,简单去掉小数部分,而整数部分是实现相关的,可以取上整数也可以取下整数,你使用的编译环境是取下整数的,所以5/9的结果为0导致a为0。
c_losed 2011-04-20
  • 打赏
  • 举报
回复

#include<iostream>
#include <conio.h>
using namespace std;
void main()
{

float a,f=104.0;
a=(float)5/9*(f-32);
printf("%.0f",a);
getch();
}
止境 2011-04-20
  • 打赏
  • 举报
回复
问的题我明白了,也是帖子发完突然想到的。毕竟我是初学者嘛。
我觉得应该输出为YES啊,是要要换算进制吗?这道题也很茫然。
[Quote=引用 7 楼 dangde_1 的回复:]

我想问你一个问题,
char buf[20];

buf[0] = 0xFF; buf[1] = 0xD9;

if (buf[0] == 0xFF && buf[1] == 0xD9)
{
printf("OK");
} else {
printf("NO");
}

你认为能输出什么?如果你不借助编译器为你服务?

有时候有些问题……
[/Quote]
陈思有 2011-04-20
  • 打赏
  • 举报
回复
a=5/9*(f-32);
当f为104.0时,先算f-32为72,5/9为0,0乘以72还是0,所以输出为0

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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