根据 IEEE 754 二进制浮点数算术标准,请问下列 C 语言程式码执行后输出为何?
int main(){
float A = 100;
float B = -125.53125;
printf("%08X\n", *(unsigned int *) &A);
printf("%08X\n", *(unsigned int *) &B);
}
解答:
42C80000
C2FB1000
我的想法:
在*(unsigned int *) &A这部分
是强制转换成一个无号整数型态的指标变量 并指向A的位址
而最前方的*则代表会显示A位址的内容(值)
也就是最后会以无号整数的型态显示出A的内容
======================================================
以上是我的想法若有错误还请纠正
解答部分是将100用浮点数表示法转换成
01000010110010000000000000000000
也就是浮点数的32位元
再将这32位元用16进位表示法显示出来成为42C80000
但今天我自己在程式中加入以下叙述
float C = 100;
printf("%08X", (unsigned int) C);
则只显示成00000064
为何电脑不会先转换成浮点数表示法再用16进位去做转换 而是直接将100转成16进位?
还请知道的大大提点 感谢