在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中没有重载的概念,所以不会出现这样的情况.