有人能解釋爲什麼用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,這將有意義......但我不明白!
有人能解釋爲什麼用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,這將有意義......但我不明白!
在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編碼的數值。
在C,sizeof操作符考慮 '一' 作爲整數所以你得到的大小
我想''a''是'int'類型,而不是'char'類型。 – nhahtdh
@PhilipKendall謝謝你指出,出於某種原因,它沒有出現在我的搜索! – Ali