我很无聊,想看看double的二进制表示是什么样的.但是,我发现窗户上有些奇怪.以下代码行说明
double number = 1;
unsigned long num = *(unsigned long *) &number;
cout << num << endl;
在我的Macbook上,这给了我一个非零数字.在我的Windows机器上它给我0.
我期待它会给我一个非零数字,因为1.0作为double的二进制表示不应该全为零.但是,我不确定我要做的是否是明确定义的行为.
我的问题是,上面的代码是愚蠢和错误的吗?而且,有没有办法可以打印出双精度的二进制表示?
谢谢.
1双是3ff0 0000 0000 0000.long是一个4字节的int.在一个小端硬件上,你正在阅读这0000 0000部分内容.
| 归档时间: | 
 | 
| 查看次数: | 2234 次 | 
| 最近记录: |