默认情况下,无符号整数不能为负。编译器会生成一个警告。 这很好。 但是,当我在一个带有负默认值的函数中做同样的事情时,它没有生成警告,这一点并不清楚。
unsigned int test(unsigned int i = -1) { return i;} // no warnings! Why?
int main()
{
unsigned int i = -1; // warning warning C4245 (ok!)
unsigned int j = test(); // no warnings! Why?
}
constexpr
在这种情况下似乎不会生成任何警告。 - Frxstremunsigned int i = -1.1
是未定义行为吗? - Jonathan Mee