在C中,sizeof('a')的輸出值是4(32位編譯器,如GCC)或者2(16位編譯器,如TC);在C++中,sizeof('a')的輸出值是1,因為在C中,字符常量默認是一個int型的值,而在C++中它默認是一個char類型的值。為什么在C++中'a'被默認為char類型呢?我理解在C++中,有重載函數這個特性,例如:
void read(char var);
void read(int var);
如果我們調用這條語句:read('a');我們實際調用的是函數read(char var);然后如果C++中把'a'當成int類型來處理的話,這時候就會調用read(int var);這樣的話就和我們的習慣不符.而在C中沒有重載的概念,所以不會出現這樣的情況.