gpt4 book ai didi

c - 为什么条件为假时无法退出for循环?

转载 作者:行者123 更新时间:2023-11-30 18:21:25 34 4
gpt4 key购买 nike

我希望循环在用户键入“0 00 00”时结束。代码如下:

main()
{
int i, o[128], m[256], s[256];
for(i = 0; o[i] != 0 && m[i] != 00 && s[i] != 00; i++)
scanf("%d %d %d", &o[i], &m[i], &s[i]);
printf("ok\n");
}

但结束它的唯一方法是输入一些字符。

最佳答案

您必须了解 for 循环中的操作顺序才能找出答案:

  1. 执行初始化操作,即i=0
  2. 在进入循环之前检查条件。这是您的第一个问题,因为 o[]m[]s[] 未初始化。
  3. 执行循环体
  4. i++ 已执行
  5. 控制权传递到步骤 2

请注意,步骤 2 中的条件始终位于循环体“前面”,检查尚未初始化的元素。

在这种情况下,最好使用 break 语句从内部结束循环,如下所示:

for (int i = 0 ; i != 128 ; i++) { // Preserve the boundaries of o[128]
scanf("%d %d %d", &o[i], &m[i], &s[i]);
if (o[i] == 0 && m[i] == 0 && s[i] == 0) {
break;
}
}

关于c - 为什么条件为假时无法退出for循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47485159/

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