void f(char){}
void f(signed char){}
void f(unsigned char){}
int main(){}
wchar_t
版本的程序不会执行相同的操作:
void f(wchar_t){}
void f(signed wchar_t){}
void f(unsigned wchar_t){}
int main(){}
错误: 重定义‘void f(wchar_t)’
void f(signed wchar_t){}
看起来 wchar_t
是无符号的。
为什么在重载中存在不一致性?
wchar_t
可以是有符号的或无符号的。 - chriswchar_t
与char
不同之处在于,char
可以是有符号类型或无符号类型,但仍然不等同于signed char
和unsigned char
类型,而wchar_t
可以是有符号或无符号类型,没有办法指定一个单独的signed wchar_t
或unsigned wchar_t
类型。 - user539810wchar_t
和signed wchar_t
是相同的。有趣的是它对char
没有做出同样的抱怨。 - Mark Ransom