C/C++中的每一个文字符(常量)都有一种与其相关的类型信息。
数字字符(例如10)会用int做为它的类型。即sizeof(10)与sizeof(int)是相等的。
但是,文字字符(例如'a')会有不同类型。在C中,文字字符被当作int类型,但是在C++中,会被当作是char类型,即C++中sizeof('a')与sizeof(char)相等。
int main()
{
printf("sizeof('a') = %d sizeof(char) = %d",sizeof('a'),sizeof(char));
return 0;
}
上面程序的运行结果:
C程序: sizeof(‘a’) = 4 sizeof(char) = 1
C++程序: sizeof(‘a’) = 1 sizeof(char) = 1
C++以此来实现函数重载。下面的这个例子可以更清晰的说明这个。
void foo(char c)
{
printf("From foo: char");
}
void foo(int i)
{
printf("From foo: int");
}
int main()
{
foo('a');
return 0;
}
运行结果:
From foo: char
可以看到,编译器调用的函数是
void foo(char);
因为‘a’是char类型。