gpt4 book ai didi

c - 没有条件的条件是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:25 24 4
gpt4 key购买 nike

我正在尝试阅读一些 C 语言。有一个带有条件的 for 循环似乎不是条件。在for循环for (h = n; h/= 2;)中,条件为h/=2;。但这不是真话或假话。这是什么意思?这个 for 循环什么时候结束?

这是来自 http://rosettacode.org/wiki/Sorting_algorithms/Shell_sort#C 的完整代码:

#include <stdio.h>

void shell_sort (int *a, int n) {
int h, i, j, t;
for (h = n; h /= 2;) {
for (i = h; i < n; i++) {
t = a[i];
for (j = i; j >= h && t < a[j - h]; j -= h) {
a[j] = a[j - h];
}
a[j] = t;
}
}
}

int main (int ac, char **av) {
int a[] = {4, 65, 2, -31, 0, 99, 2, 83, 782, 1};
int n = sizeof a / sizeof a[0];
int i;
for (i = 0; i < n; i++)
printf("%d%s", a[i], i == n - 1 ? "\n" : " ");
shell_sort(a, n);
for (i = 0; i < n; i++)
printf("%d%s", a[i], i == n - 1 ? "\n" : " ");
return 0;
}

最佳答案

它会在执行增广赋值运算符/=后计算h,它将h除以第二个操作数并将结果赋值回h.
h 为 0 时,条件将失败。

一个更具可读性的等价物是

int h = n, i, j, t;
while (h /= 2) {
...
}

for(h = n/2; h; h/= 2) { ... } 也是等价的,但是为了有一个for循环。

关于c - 没有条件的条件是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32620879/

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