簡體   English   中英

C ++將無符號轉換為已簽名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM