gpt4 book ai didi

c - 在 C 中使用 goto 关键字

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

# include <stdio.h>

int main()
{
int a=5;
begin:
if(a)
printf("%d\n",a);
a--;
goto begin;
return 0;
}

当 a 变为 0 时,如果条件不会执行,那么这段代码中的输出为何会是无穷大

输出-

 5
4
3
2
1
0
-1
-2
and so on endless

最佳答案

如果程序确实为您打印了0,那么您的编译器(甚至您的机器......)可能存在严重问题。我怀疑它不会打印 0,但你的问题实际上是为什么程序无限循环。

这是因为 if 主体仅包含 print 语句。因此,当 a 达到 0 时,不会打印它,而是打印行

a--;
goto begin;

仍然被执行。机器将服从,返回到开始并继续循环。最快的解决方法是在 a != 0 时将要执行的所有语句放在大括号内:

if(a){
printf("%d\n",a);
a--;
goto begin;
}

return 0;

这将使程序仅循环直到a为0,然后返回。

但真正的问题是:不要使用goto(为此)!这是使用while loop的完美情况。 :

while(a--){
printf("%d\n", a);
}

return 0;

(while-body 周围的大括号在这里甚至不是严格必要的,但只是一个好的实践)

关于c - 在 C 中使用 goto 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633405/

25 4 0
文章推荐: C 编译错误
文章推荐: c - 带指针的二维数组
文章推荐: C程序只有两个循环
文章推荐: c - C中返回值1的含义
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com