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