gpt4 book ai didi

c - 这个循环会无限运行吗?

转载 作者:太空狗 更新时间:2023-10-29 16:38:34 24 4
gpt4 key购买 nike

我正在上课,一位非常有经验的老师告诉我,当 STACK 内存 被程序完全填满时,以下代码将终止。现在我不明白为什么?下面是源代码:-

#include<stdio.h>

int main()
{
char i;
for (i = 120; i < 130; i++)
printf("\n%d", i);

return 0;
}

现在,我觉得这个循环不会终止的原因是,一旦程序运行,变量就在一个内存位置声明,该位置直到程序的生命周期都不会改变,我们只是改变已经存在的值声明的变量。所以,我想问一下这个问题的答案。另外,如果你觉得老师说得对,也请说明一下:)

另外,我试过长时间运行程序,但内存消耗并没有增加一丁点:|

最佳答案

程序的操作取决于您的实现如何定义char:it may be a signed or an unsigned type .

如果是无符号的,则输出10个数并终止。

如果它被签名,它将在 127 处换行,下一个值是 -128 - 在大多数实现中。但根据标准,这是未定义的行为。

我不明白为什么它会吃掉整个堆栈——没有递归也没有额外的内存分配,所以

told by a very experienced teacher that the following code will terminate when the STACK memory gets completely filled by the program

表示“从不”——因为它只是没有填满堆栈。它不可能是一位经验丰富的程序员/老师——或者 OP 不是一位经验丰富的听众,并且误解了老师告诉他的事情。

关于c - 这个循环会无限运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21182833/

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