2012-08-25 41 views
-1

可能重複:
Size of character ('a') in C/C++什麼是在C的printf( 「%d n」 個,的sizeof( 'A'))的結果和C++

OS:linuxmint 32位

編譯器:GCC & G ++

我試試這個代碼:

#include <stdio.h> 

int main() 
{ 
    printf("%d\n",sizeof('a')); 
    return 0; 
} 

和我用gcc編譯它,結果是4,我改變至g ++,它是1

然後我使用: sizeof(char),並且結果是1

我使用: char s ='a'; printf('%d \ n',sizeof(s));

,其結果是1

,但我在網上搜索,也有的人說,他們得到的12結果。

那麼爲什麼會有這麼多不同的結果呢?

+1

C中字符常量類型(如'a')的類型爲int。在C++中,它是char。 –

+1

除了沒有在網站上搜索類似的問題,你也應該照顧'printf'。因爲這是一個無符號類型,所以'%d'從來不是用於打印'size_t'類型的值的正確格式,並且可能具有不同於int的寬度。 –

+0

@JensGustedt:'size_t'的格式是'「zu」'(假設您的實現已經追溯到20世紀後期)。 –

回答

1

C中的字符常量表示爲int當您指定char類型時,它只有1個字節。

1

'a'這樣的字符文字在C89中的類型爲int,這是gcc使用的默認標準。在C++中,重載字符和字符串的類型分別爲charchar*(請考慮std::cout << 'a')。由於x86和x64_86上的sizeof(int) == 4sizeof(char) == 1可以獲得您描述的結果。

1

sizeof(char)始終爲1,均爲C和C++。在C中,'c'的類型爲int,所以sizeof('c')sizeof(int)相同。在C++中,'c'的類型爲char,因此sizeof('c')sizeof(char)相同,即1.

相關問題