2014-11-15 26 views
-2

在以下聲明聲明中一個字節變量如何可以存儲兩個字節的字符常量?

char c ='A';

變量c存儲一個字節的存儲空間,而字符常量'A'存儲兩個字節的存儲空間。一個字節變量如何可以存儲兩個字節的字符常量?

+5

您可以諮詢呢? –

+0

「字符常量」是什麼意思A'存儲兩個字節的內存空間「?基本字符集中的字符保證適合一個字節(即'char')。如果類型爲int的字符文字較寬,則其最高有效位/字節全部爲零,因此將其截斷爲「char」不會導致信息丟失。 –

+0

在這樣的聲明和初始化中,字符文字可能實際上並不需要任何空間!如果這個變量是全局變量,或者它是一個聲明爲'static'的局部變量,那麼這個變量在編譯時由編譯器初始化,實際的字面值'A'不存儲在任何地方,所以文字是* zero *字節。 –

回答

0

在C語言中,char類型用於存儲1個字節的整數。當您將'A'分配給char c時,您不會將字母A本身分配到內存中。相反,您正在分配表示A字符的數字(整數)。每個字母都有一個代表它的數字。 。請記住,與人類不同,計算機無法理解字母。這就是爲什麼我們需要一種方法將它們轉換爲數字。爲此,我們使用不同的編碼風格,如:ASCII,UTF-8等 如果您的機器使用ASCII編碼,則分配給char c的值將爲65(十六進制0x41)。您可能會注意到,0x41是一個字節,可以存儲在您的char變量中。爲什麼你認爲`'A'`需要兩個字節內存http://www.asciitable.com/

相關問題