【发布时间】:2016-10-27 02:52:16
【问题描述】:
据我了解,char 可能具有不同的底层类型,具体取决于架构。
在隐式转换期间,unsigned char 可能变为 int 或 unsigned int。
这是否意味着以下代码具有未指定的行为?
#include <iostream>
void function(unsigned int){
std::cout << "unsigned\n";
}
void function(int){
std::cout << "signed\n";
}
int main() {
char c;
function(c);
}
我没有收到任何编译器警告。它总是会解析为“签名”吗?
【问题讨论】:
-
只要
sizeof int > sizeof char,是的。 -
更准确地说,只要
int可以表示unsigned char可以表示的每个值。实际上,这样做的结果是sizeof int > sizeof char (= 1)。
标签: c++ function char implicit-conversion overload-resolution