C/C++中的每个文字(常量)都将具有与之关联的类型信息。
在C和C++中,数字文字(例如10)的类型均为int。这意味着sizeof(10)和sizeof(int)将返回相同的值。
但是,字符文字(例如'V')将具有不同的类型,sizeof('V')在C和C ++中返回不同的值。在C语言中,字符文字被视为int类型,而在C++语言中,字符文字被视为char类型。
int main() { printf("sizeof('V') = %d sizeof(char) = %d", sizeof('V'), sizeof(char)); return 0; }
以上程序的结果:
C 结果 – sizeof(‘V’) = 4 sizeof(char) = 1C++ 结果 – sizeof(‘V’) = 1 sizeof(char) = 1
在C++中,需要这种行为来支持函数重载。一个例子将使其更加清楚。预测以下C++程序的输出。
void foo(char c) { printf("From foo: char"); } void foo(int i) { printf("From foo: int"); } int main() { foo('V'); return 0; }
编译器必须调用
void foo(char);
因为“ V”类型是char。