#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? 我的問題是爲什麼語言不同地解釋字符常量?
#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? 我的問題是爲什麼語言不同地解釋字符常量?
其實sizeof('a') == sizeof(int)
在C(所以你應該得到4
)。我不是完全確信關於C++,但我相信sizeof('a') == sizeof(char)
。
C部分在C FAQ中進行了說明。
也許令人驚訝,性格 常量C是
int
型的,所以sizeof('a')
是sizeof(int)
(雖然 這是另一個領域,C++ 不同)你設法找到一個
在C和C++標準差別很大的地方。他們是不同的答案,因爲規格說他們必須是。
有趣的事情(雖然也許不是很有用),你可以合法地引用'abcd'(單引號而不是雙引號)......它沒有定義字符或字符串,它定義了一個int其價值基於串聯在一起的每個字符的ASCII值。 – mah
可能和ansi與unicode的事情,但那是猜測 –
我熟悉的規則是完全相反的('sizeof('a')'在C中是4,在C++中是1)。 –