gpt4 book ai didi

c - while(1) 真的是无限的吗?

转载 作者:行者123 更新时间:2023-11-30 20:44:22 26 4
gpt4 key购买 nike

我有这个程序:

int main(){
while(1) printf("Hi\n");
}

这真的会永远重复吗?如果我放入while(1),而不使用printf,重复次数会相同吗?如果不是永远,什么时候堆栈溢出?该程序:

int main(){
loop:;
printf("Hi\n");
goto loop;
}

和第一个一样吗?如果不是的话有什么区别?

最佳答案

您的两个程序是等效的。一个例子:

#include <stdio.h>

void f1(void)
{
while(1)
printf("Hi\n");
}

void f2(void)
{
loop:
printf("Hi\n");
goto loop;
}

编译:

cc -O3 -c -o example.o example.c

查看输出二进制文件:

example.o:
(__TEXT,__text) section
_f1:
0000000000000000 pushq %rbp
0000000000000001 movq %rsp, %rbp
0000000000000004 pushq %rbx
0000000000000005 pushq %rax
0000000000000006 leaq L_str1(%rip), %rbx ## literal pool for: "Hi"
000000000000000d nopl _f1(%rax)
0000000000000010 movq %rbx, %rdi
0000000000000013 callq _puts
0000000000000018 jmp 0x10
000000000000001a nopw _f1(%rax,%rax)
_f2:
0000000000000020 pushq %rbp
0000000000000021 movq %rsp, %rbp
0000000000000024 pushq %rbx
0000000000000025 pushq %rax
0000000000000026 leaq L_str1(%rip), %rbx ## literal pool for: "Hi"
000000000000002d nopl _f1(%rax)
0000000000000030 movq %rbx, %rdi
0000000000000033 callq _puts
0000000000000038 jmp 0x30

请注意,它们包含相同的说明。

关于c - while(1) 真的是无限的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22520750/

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