2012-06-22 104 views
1

可能重複:
Size of character ('a') in C/C++C:解釋的sizeof行爲

有人能解釋爲什麼用C sizeof(char) = 1和sizeof(name[0]) = 1,但sizeof('a') = 4?

name[0]在這種情況下將char name[1] = {'a'};

我已經試過到C的文檔閱讀得到這一點,但我只是不明白這一點!如果sizeof('a')sizeof(name[0])都是4我會得到它,如果他們都是1,這將有意義......但我不明白!

+2

我想''a''是'int'類型,而不是'char'類型。 – nhahtdh

+0

@PhilipKendall謝謝你指出,出於某種原因,它沒有出現在我的搜索! – Ali

回答

6

在C中,字符文字如'a'有類型int,因此sizeof('a')等於sizeof(int)

在C++中,字符文字的類型爲char,因此sizeof('a')等於sizeof(char)

參考文獻:

C99標準:6.4.4.4字符常量
第2段:

一個整數字符常量是在單個封閉 的一個或多個多字節字符序列 - 引用,如’x’’ab’

C++ 03標準:2.13.2字符文字
第1段:

文字的字符是一個或多個字符在單引號,如在’x’,任選前面加字母L,如L’x’。不以L開頭的字符文字是普通字符文字,也被稱爲窄字符文字。 包含單個c-char的普通字符文字的類型爲char,其值等於執行字符集中c-char編碼的數值。

+0

是有意義的。謝謝! – Ali

+0

在C和C++中,字符常量都是整數;這是重要的類型。 –

+0

@CharlesBailey:我編輯更清楚。 –

0

在C,sizeof操作符考慮 '一' 作爲整數所以你得到的大小