C语言inf错误是什么,将float INF,-INF和NAN转换为C中的整数的结果是什么?

有什么标准规定应该输出什么?

例如这个代码:

#include

#include

int main(int argc,char** argv) {

float a = INFINITY;

float b = -INFINITY;

float c = NAN;

printf("float %f %f %f\n",a,b,c);

printf("int %d %d %d\n",(int) a,(int) b,(int) c);

printf("uint %u %u %u\n",(unsigned int) a,(unsigned int) b,(unsigned int) c);

printf("lint %ld %ld %ld\n",(long int) a,(long int) b,(long int) b);

printf("luint %lu %lu %lu\n",(unsigned long int) a,(unsigned long int) b,(unsigned long int) c);

return 0;

}

编译在gcc 4.2.1版(Apple Inc. build 5664)目标:i686-apple-darwin10

$gcc test.c && ./a.out

float inf -inf nan

int -2147483648 -2147483648 -2147483648

uint 0 0 0

lint -9223372036854775808 -9223372036854775808 -9223372036854775808

luint 0 9223372036854775808 9223372036854775808

这是很奇怪的(int)inf < 0!?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值