原问题来自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<std::size_t>::max()
网友评论