簡體   English   中英

C/C++ 字符、無符號字符和有符號字符的底層表示

[英]C/C++ underlying representation of char, unsigned char and signed char

我是否正確地說以下每個定義中的基礎對象表示(位模式)是相同的?

char c = 240;
unsigned char c = 240;
signed char c = 240;

那么,只有在表達式(或強制轉換)中使用c時,簽名才重要?

在一般情況下,如果signed char的范圍不包括240 ,則說模式相同是不正確的。 如果240超出范圍,這個溢出初始化的結果是實現定義的(並且可能導致一個信號,見 6.3.1.3/3)。 如果已簽名,這同樣適用於char初始化。

該語言僅保證對signed charunsigned char范圍的公共部分進行匹配表示。 例如,這保證產生相同的模式

char c = 10;
unsigned char c = 10;
signed char c = 10;

使用240在一般情況下沒有這樣的保證(假設它超出范圍)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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