考虑以下代码:
void foo(unsigned int x)
{
}
int main()
{
foo(-5);
return 0;
}
编译时没有任何问题。像这样的错误可能会导致很多问题,而且很难找到。为什么C++允许这样的转换?
发布于 2011-03-11 01:21:03
因为该标准允许从signed
到unsigned
类型的隐式转换。
也可以将结果(int)a + (unsigned)b
到unsigned
-这是一个c++标准。
https://stackoverflow.com/questions/5263267
复制相似问题