这个C程序怎么错的~~

[复制链接]
查看11 | 回复3 | 2009-3-30 23:27:15 | 显示全部楼层 |阅读模式
#include
#include
int main()
{
double x=pow(2,31)+1;
if((float)1.0/float(x)*float(x)==1)
{
printf("for the type is float,it's true\n");
}
else
{
printf("for the type is float,it's false\n");
}
return 0;
}
题目要求是判断x=2^31+1对于那个式子是否等于1,我不知道怎么写就这样写了一个程序,希望大家能够指正我的错误是怎么回事,还有那个数是不是越界了?那题目应该怎么做呢?

回复

使用道具 举报

千问 | 2009-3-30 23:27:15 | 显示全部楼层
将x强制转化成float型,应该(float)x;将double型转成float型。是大转小。可能出现溢出错误,也可能出现取舍的误差。建设不将其转换成float型。直接运算...
回复

使用道具 举报

千问 | 2009-3-30 23:27:15 | 显示全部楼层
此程序在c++环境下编译是可以通过的。我把它改成了这样,在C下可编译通过:#include #include int main() { double x=pow(2,31)+1; if((float)1.0/(float)x*(float)x==1){ printf("for the ...
回复

使用道具 举报

千问 | 2009-3-30 23:27:15 | 显示全部楼层
问题表达不清楚,说清楚一些呀。...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行