关于 reinterpret_cast 的 c 编程问题

c programming question on reinterpret_cast

(char) 的 reinterpret_cast 在这里做什么?

 unsigned int aNumber = 258; // 4 bytes in allocated memory [02][01][00][00]
 printf("\n is printing out the first byte %02i",(char)aNumber); // Outputs the first byte[02]

为什么我没有指向它就输出了第一个字节?例如 (char*)&aNumber

%02i 是这样做的吗 = (char)*&aNumber

或者 (char) 的 reinterpret_cast 是否切掉了剩余的 3 个字节,因为它是一个 char,它只分配了其中的一个字节 4 个字节?

首先,reinterpret_cast是一个C++运算符。你展示的不是那个,而是 C 风格的转换。

转换正在将类型 unsigned int 的值转换为类型 char 的值。超出范围的值的转换是实现定义的,但在您可能遇到的大多数实现中,这是通过将低位字节重新解释为转换值来实现的。

在这种特殊情况下,aNumber 的低位字节的值为 0x02,因此这就是转换为 char.

时的结果