gpt4 book ai didi

c - for循环条件递增

转载 作者:行者123 更新时间:2023-12-04 11:46:10 25 4
gpt4 key购买 nike

在浏览 Linux 源代码时,我遇到了以下 line :

int tmp;    
for (tmp = PIDTYPE_MAX; --tmp >= 0; )

为什么不这样做:

for (tmp = PIDTYPE_MAX; tmp >= 0; tmp--)

这是another吗?某种 for 循环优化?

最佳答案

你的循环不等价:第二个循环包括上限 PIDTYPE_MAX ,第一个没有。

在循环体之前递减迭代器变量确保条件0 <= tmp < PIDTYPE_MAX在循环中始终为真。这实际上是 C 中的规范后向循环,其中下限是包容性的,上限是排他性的。

请注意,第一个循环需要一个带符号的整数才能工作,因此 tmp >= 0 的测试说得通。 (对于无符号整数总是如此。)

无符号类型,如 size_t通常用于数组索引和计数,它们不能为负数。各自的循环是:

for (size_t i = 0; i < N; i++) ...     // iterate over [0, N) forwards
for (size_t i = N; i-- > 0; ) ... // iterate over [0, N) backwards

关于c - for循环条件递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60501052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com