Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 显示浮点的ieee 32位表示形式。。。指针输出上的奇怪行为_C++ - Fatal编程技术网

C++ 显示浮点的ieee 32位表示形式。。。指针输出上的奇怪行为

C++ 显示浮点的ieee 32位表示形式。。。指针输出上的奇怪行为,c++,C++,以下代码有点问题: void main() { float value = 100; char * vP; vP = (char *) &value; printf ("%02x ", *(vP+3)); printf ("%02x ", *(vP+2)); printf ("%02x ", *(vP+1)); printf ("%02x ", *(vP+0)); } 我得到的结果是: 42 FFFFFF C8 00 00 而不是: 42 c8 00 00(根据IEEE 32

以下代码有点问题:

void main()
{

float value = 100;

char * vP;

vP = (char *) &value;

printf ("%02x ", *(vP+3));
printf ("%02x ", *(vP+2));
printf ("%02x ", *(vP+1));
printf ("%02x ", *(vP+0));

}
我得到的结果是:

42 FFFFFF C8 00 00

而不是:

42 c8 00 00(根据IEEE 32位转换的要求)

有人能帮忙解释一下哪里出了问题吗?如果我使用 浮点值如12.2,一切正常

谢谢并致以最良好的问候


Olaf。

这是因为您的计算机上有一个
字符
签名。然后,在
printf
中,由于它是一个可变函数,
char
被提升为
int
,保留负号。因此,0xC8变为0xFFFFC8


使用
无符号字符*vP
强制表示为无符号。请参阅以进行比较。

这是因为您的计算机上有一个
字符
签名。然后,在
printf
中,由于它是一个可变函数,
char
被提升为
int
,保留负号。因此,0xC8变为0xFFFFC8

使用
无符号字符*vP
强制表示为无符号。请参阅以进行比较