std :: min不返回两个值中的较小值

时间:2014-08-19 12:40:11

标签: c++

我有这行代码:

out = std::min(x - 1, y - 1);

但它返回了两个数量的更大。怎么会这样?

1 个答案:

答案 0 :(得分:11)

只有当xy为无符号类型且其中一个为零时,才会发生这种情况。

从无符号值0减去1将导致无符号值回绕到该类型的最大可能值。因此,另一个值会更小。

作为旁注:只责备你的编译器/ STL作为最后的手段。