[英]C++ cast unsigned to signed
我試圖復制它,但無法編譯。
unsigned char x = 0;
reinterpret_cast<signed char>(x);
它說
C:\Users\SXG5558\Documents\Arduino\sketch_jun30a\sketch_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庫,該庫可以讀取和寫入未簽名的數據,但是我正在使用該庫來控制已簽名的傳感器,因此我想重新解釋轉換實際數據。
來自cppreference.com的相關部分是
類型別名
當將動態類型為DynamicType的對象的指針或引用重新解釋為其他類型的AliasedType的對象的指針或引用的reinterpret_cast(或C樣式強制轉換)時,強制轉換始終成功,但是結果指針或引用只能用於如果滿足以下條件之一,則訪問該對象:
[...]
- AliasedType是DynamicType的(可能是cv限定的)有符號或無符號變體
[...]
即。 您從鏈接的示例中忘記了&
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.