gpt4 book ai didi

c - 使用 goto 语句强制执行至少一次 for 循环迭代的有效性

转载 作者:太空狗 更新时间:2023-10-29 16:27:37 25 4
gpt4 key购买 nike

免责声明:我知道它晦涩难懂,我不会那样编程。我知道首选的 do-while 语句,而不是那个,问题更多是关于特定语言结构的有效性。


goto 是否总是应该省略 for 循环的条件表达式?根据我的观察,它跳过了第一个(即初始化)和第二个表达式。这会总是以这种方式发生,还是这种行为纯粹依赖于编译器?

#include <stdio.h>

int main(void)
{
int m = 5;

goto BODY;
for (m = 0; m < 5; m++)
BODY: puts("Message"); // prints "Message" once

printf("m = %d\n", m); // prints m = 6

return 0;
}

最佳答案

是的,你跳过了两个 m = 0m < 5 ,这是应该的。

for (A; B; C)
D;

相当于

{
A;
loop:
if (B)
{
D;
C;
goto loop;
}
}

无法将控制转移到 A 之间的点和 B .

你的循环语义与这个“纯 goto”版本完全一样:

int m = 5;
goto BODY;
m = 0;
loop:
if (m < 5)
{
BODY: puts("Message"); // prints "Message" once
m++;
goto loop;
}
printf("m = %d\n", m); // prints m = 6

关于c - 使用 goto 语句强制执行至少一次 for 循环迭代的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37619907/

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