CPP-一个看似无穷死循环的for

原问题来自StackOverflow

大意就是原PO认为下面这段代码会产生死循环

for (std::size_t j = M; j <= M; --j)

相信这段代码稍微了解CPP的人都知道是什么意思,以及是如何工作的。size_t是一个unsigned类型,当你对j减到0之后要再减下去,那么结果就是这个类型的最大值。也就是说这个循环想表达的意思:

(std::size_t j = M + 1; j --> 0; )

其实原PO给出的循环的确有可能导致死循环,考虑M取值为std::numeric_limits::max()

你可能感兴趣的:(CPP-一个看似无穷死循环的for)