gpt4 book ai didi

c++ - Counter int 在不询问的情况下递增

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:43 25 4
gpt4 key购买 nike

考虑这段代码:

#include <string.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
const char *task = "foo";

int key = 0;
int arr[] = {};

if (!strcmp(task, "foo")) {
key++;
}

arr[key] = 2;

key++;

printf("key: %d\n", key);
}

key 的最终值为3。它应该是 2

如果我在第一次出现时将 "foo" 更改为 "foo1",则 key 的最终值为 1,正如预期的那样。

如果我将 arr[key] = 2 更改为 arr[key] = 1,或者删除该行,key 的最终值> 正如预期的那样是 2

这是为什么?

最佳答案

你有undefined behavior在您的代码中,这样任何事情都有可能发生。

int arr[] = {};

是一个零大小的数组,这不是标准的。由于其大小为 0,因此访问任何元素并设置其值是未定义的行为。由于我们现在有未定义的行为,因此不再有任何方法可以推断出程序是如何工作的。

关于c++ - Counter int 在不询问的情况下递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35799766/

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