(編輯改變C/C++到C)char和unsigned char有什麼區別?
請幫我找出一個乾淨的澄清char
和unsigned char
在C.特別是當我們的嵌入式設備和普通PC機(緩衝區之間的差異之間傳輸數據unsigned char
和普通char
)。
(編輯改變C/C++到C)char和unsigned char有什麼區別?
請幫我找出一個乾淨的澄清char
和unsigned char
在C.特別是當我們的嵌入式設備和普通PC機(緩衝區之間的差異之間傳輸數據unsigned char
和普通char
)。
你在問兩種不同的語言,但在這方面,兩者的答案(或多或少)是相同的。你真的應該決定你正在使用哪種語言。
差異:
char
是否帶有符號相似之處:
如果你只是使用它們來傳輸原始字節值,沒有算術,那麼沒有實際的區別。
如果我考慮'C'語言我可以在編碼或解碼操作期間知道char和unsigned char類型的差異和影響。 ? –
唯一真正的區別是'unsigned char'沒有明確的簽名,'char'可能被簽名也可能不被簽名。 (這是_implementation defined_ char'是否是有符號或無符號的,這意味着它可以完全處於編譯器編寫器的意願之中,但編譯器必須記錄它是哪一個。)處理原始數據時,應該明確使用'unsigned char'。處理有意義的數據時,應根據數據的含義選擇簽名類型或未簽名類型。如果數據的符號完全不相關,請使用普通的'char'。 –
char類型是特殊的。它不是一個無符號的字符或一個有符號的字符。這些是三種不同的類型(int和signed int是相同的類型)。一個char可能有一個有符號或無符號的表示。
從3.9.1基本類型
平原字符,符號的字符,和unsigned char三種不同類型。 A char,signed char和unsigned char佔用相同數量的 存儲並具有相同的對齊要求(3.11);也就是說,它們 具有相同的對象表示。
Hi Dieter,在硬件級別(在設備驅動程序開發中)完成的編碼或解碼操作期間是否有對_char_和_unsigned char_的任何考慮? –
謝謝,我澄清了。 –
沒有C/C++這樣的東西。您可以使用C或C++,但不能同時使用這兩種。選擇你想問的一種語言。在C中,區別在於簽名。 'char'可以用實現定義的方式進行簽名或無符號簽名,而'unsigned char'顯然總是無符號的。 – user3447428
在編碼或解碼操作中,我可以知道char和unsigned char類型的區別和作用。 ? –
@ user3447428雖然它們確實是不同的語言,但它確實沒有任何意義去問「C/C++」是如何工作的,這兩種語言在涉及「char」時的行爲都完全相同...... – Lundin