这个语句 if ( -1 > 1U ) 是true还是false呢?结论是true。负数比正数大?
因为是有符号整数和无符号整数比较,-1被当做无符号整数,内存中是0xFF...FF,总之是个很大的正数,当然就比1大了。
#include <iostream>
int main()
{
std::max(-1,1U);
return 0;
}
error C2780: 'const _Ty &std::max(const _Ty &,const _Ty &,_Pr)' : expects 3 arguments - 2 provided
这是提醒用户,-1和1U比较编译器过不去
int main()
{
std::max<int>(-1,1U);
return 0;
}
OK,告诉编译器,按int比较