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

P45*_*ent -7 c++

我有这行代码:

out = std::min(x - 1, y - 1);
Run Code Online (Sandbox Code Playgroud)

但它返回了两个量中较大的一个.怎么会这样?

Bat*_*eba 11

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

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

作为旁注:仅将您的编译器/ STL归咎于最后的手段.

  • OP要么完全恐慌,要么接受采访,要么两者兼而有之! (3认同)