我想为这样的变量赋值:
double var = 0xFFFFFFFF;
结果var
得到分配的值 65535.0。由于编译器假定目标系统为 64 位,因此数字文字(即所有相应的 32 位)被解释为有效位和精度位。但是,由于0xFFFF FFFF
只是位模式的一种表示法,没有任何关于表示的提示,因此它可能会被完全不同地解释为浮点值。因此,我想知道是否有办法操纵对值的这种固定解释。换句话说,给出关于所需表示的提示。(也许有人也可以指出我参与定义这种隐含解释的标准)。
到目前为止,我系统上的默认精度解释似乎是
(int)0xFFFFFFFF x 10 0。
只有分数字段被填充1。
所以也许(这里:对于 16 位交叉编译)我希望它是一种不同的表示形式,例如:
(int)0xFFFFFF x 10 (int)0xFF
(暂时忽略符号位)。
因此我的问题是:如何强制对十六进制文字符号进行自定义双重解释?
1 即使我的十六进制文字是0xFFFF FFFF FFFF FFFF
该值仅解释为小数部分 - 很明显,位应该用于指数和符号字段。但似乎文字被切断了。