geeksforgeeks 005-character literals在c和c++中的不同类型

numeric literals(10)用int作为类型,所以sizeof(10)=sizeof(int)
character literals(‘V’)却有着不同的类型,

1
2
3
4
5
int ()
{
printf("sizeof('V') = %d sizeof(char) = %d", sizeof('V'), sizeof(char));
return 0;
}

输出

1
2
C result – sizeof(‘V’) = 4 sizeof(char) = 1
C++ result – sizeof(‘V’) = 1 sizeof(char) = 1

这样做是为了支持C++中的函数重载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void foo(char c)
{
printf("From foo: char");
}
void foo(int i)
{
printf("From foo: int");
}

int ()
{
foo('V');
return 0;
}

编译器会调用

1
void foo(char);