2011-06-24 100 views
1

可能重複:
Size of character ('a') in C/C++SIZEOF在C和C++

#include <stdio.h> 

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

#include <iostream> 
using namespace std;  

int main(){ 
    cout << sizeof('a'); 
    return 0; 
} 

對於C,它給4作爲答案,而對於C++它給1? 我的問題是爲什麼語言不同地解釋字符常量?

+1

有趣的事情(雖然也許不是很有用),你可以合法地引用'abcd'(單引號而不是雙引號)......它沒有定義字符或字符串,它定義了一個int其價值基於串聯在一起的每個字符的ASCII值。 – mah

+0

可能和ansi與unicode的事情,但那是猜測 –

+0

我熟悉的規則是完全相反的('sizeof('a')'在C中是4,在C++中是1)。 –

回答

4

其實sizeof('a') == sizeof(int)在C(所以你應該得到4)。我不是完全確信關於C++,但我相信sizeof('a') == sizeof(char)

C部分在C FAQ中進行了說明。

也許令人驚訝,性格 常量C是int型的,所以 sizeof('a')sizeof(int)(雖然 這是另一個領域,C++ 不同)你設法找到一個

0

在C和C++標準差別很大的地方。他們是不同的答案,因爲規格說他們必須是。