有什么标准规定应该输出什么?
例如这个代码:
#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!?