那么float a = 36893488147419103231;
该常量为64位的有符号long long? 应该是溢出了吧?不然也表示不出2的65次方减1这样的数啦。
[/Quote]
是溢出,36893488147419103231溢出后 unsigned long long 就是18446744073709551615
36893488147419103231为64位的-1,无符号的话就是18446744073709551615
转为浮点后就为18446744073709552000.000000了
看一下:
int main() {
float a = 36893488147419103231;
long long b=36893488147419103231;
unsigned long long d=b;
printf("%f %lld %llu\n", a,b,d);
return 0;
}