gpt4 book ai didi

c - K&R 堆栈示例中可能存在错误

转载 作者:行者123 更新时间:2023-11-30 19:56:05 25 4
gpt4 key购买 nike

在K&R书中,Calc程序的堆栈有

#define MAXVAL 100
int sp =0; /* next free stack position */
double val[MAXVAL]; /* value stack*/
/* push: push f onto value stack */
void push(double f) {
if ( sp < MAXVAL )
val[sp++] = f;
else
printf ("error: stack full, can't push%g\n",f);
}

它可以压入 1 个额外的值,导致堆栈溢出。它应该是 (sp < MAXVAL - 1)。但很难相信这本书里有这样的错误。

最佳答案

这不是一个错误。在从 0MAXVAL-1(含)的索引处分配给 val[] 是合法的。

请注意,sp++ 是一个后递增表达式,这意味着 sp 在其值之后递增用于索引val[]。因此,此示例中不存在未定义的行为。

关于c - K&R 堆栈示例中可能存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41892546/

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