c++将unsigned转换为signed

C++ cast unsigned to signed

本文关键字:signed 转换 unsigned c++      更新时间:2023-10-16

我试图复制这个,但它无法编译。

unsigned char x = 0;
reinterpret_cast<signed char>(x);

C:UsersSXG5558DocumentsArduinosketch_jun30asketch_jun30a.ino: In function 'void setup()':
sketch_jun30a:3: error: invalid cast from type 'unsigned char' to type 'signed char'
     reinterpret_cast<signed char>(x);
                                    ^
exit status 1
编辑:

要清楚,我真的想重新解释内存中的位从有符号到无符号。我正在编写一个读取和写入无符号数据的I2C库,但我使用该库来控制已签名的传感器,因此我想重新解释cast实际数据。

来自cppreference.com的相关部分为

类型别名

当动态类型为DynamicType的对象的指针或引用被reinterpret_cast(或c风格强制转换)为不同类型AliasedType的对象的指针或引用时,强制转换总是成功,但产生的指针或引用只能用于访问对象,如果满足以下条件之一:

[…]

  • AliasedType是DynamicType的(可能是cv限定的)有符号或无符号变体

[…]

ie。您忘记了您链接的示例中的&