簡體   English   中英

“char”是一種特殊類型的整型變量嗎?

[英]Is "char" a special type of integer variable?

我最近看到一個聲明說 C 中的“char”類型實際上是一種特殊形式的整數——一種存儲表示字符和符號的 ASCII 代碼數字的形式。

這有多遠有效? 這就引出了另一個問題——char 類型真的可以在 C 中歸類為整數嗎?

是的,在 C 中, char被認為是整數類型。 它需要至少有 8 位。 一個char和一個字節存儲之間的等價物是相當明確的,而不僅僅是通常發生的事情。 例如,(C99,§5.2.4.2.1/1):

number of bits for smallest object that is not a bit-field (byte)
CHAR_BIT                                            8

因此,一個char總是恰好占用一個字節,該字節必須至少為 8 位。 如果它更大,它仍然只占用一個字節——但那個字節恰好大於 8 位。

就持有 ASCII 碼而言,這通常是正確的,但不一定如此。 在 IBM 大型機之類的設備上,它可能會保存 EBCDIC 代碼。 在更常見的機器上,“ASCII”或多或少是偶然出現的,但是當對非英文字符進行編碼時,您很快就會發現它並不是真正存儲 ASCII。 它通常存儲 ISO 8859/x,或者可能是 Unicode UTF-8。

char類型是 C 中的整數類型,與其他整數類型(如shortintlong等)屬於同一家族。整數類型可以存儲整個整數值,最大為用於描述的編碼位數積分型。 例如,在大多數平台上,一個char是八位或一個字節,因此它最多可以表示 2^8 個不同的值。

是的,一個char (通常)是一個單字節整數。 除了編譯器知道以不同方式對待它,通常使用 ASCII 字符語義。 許多庫/頭文件定義了一個BYTE類型,它只不過是一個unsigned char ,用於存儲一個字節的整數。

暫無
暫無

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

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