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<std::size_t>::max()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容