gpt4 book ai didi

c - 这个循环是如何结束的,结果是确定的吗?

转载 作者:行者123 更新时间:2023-12-04 10:58:38 25 4
gpt4 key购买 nike

我找到了一些代码,但我对循环如何退出及其工作原理感到困惑。程序是否产生确定性输出?

我感到困惑的原因是:

1. `someArray` is of size 2, but clearly, the loop goes till size 3,
2. The value is deterministic and it always exits `someNumber` reaches 4

有人可以解释这是怎么发生的吗?

当我放入尖括号时,代码打印不正确 <>围绕包含的库名称。

#include <stdlib.h>
#include <time.h>
#include <stdio.h>

int main() {
int someNumber = 97;
int someArray[2] = {0,1};
int findTheValue;

for (findTheValue=0; (someNumber -= someArray[findTheValue]) >0; findTheValue++) {

}
printf("The crazy value is %d", findTheValue);
return EXIT_SUCCESS;
}

最佳答案

越界访问数组元素是未定义的行为。也就是说,程序可以为所欲为,回复42,吃掉你的硬盘或者花光你所有的钱。换句话说,在这种情况下发生的事情完全取决于平台。它可能看起来是“确定性的”,但这只是因为你很幸运,也可能是因为你只是从那个地方读取而不是写入它。

这种代码很糟糕。不要那样做。

关于c - 这个循环是如何结束的,结果是确定的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5684868/

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