gpt4 book ai didi

c - 为什么我的程序中第七个变量是6?

转载 作者:行者123 更新时间:2023-11-30 18:21:32 26 4
gpt4 key购买 nike

#include <stdio.h>

int main(void) {
int n,i;
int str[n];

scanf("%d\n",&n);
for(i=0;i<=n;i++)
{
scanf("%d",&str[i]);
printf("%d th %d\n",i,n);
}
return 0;
}

输入:

10

8 9 2 1 4 10 7 6 8 7

输出:

0 th 10

1 th 10

2 th 10

3 th 10

4 th 10

5 th 10

6 th 10

7 th 6

为什么输出中是 6?

最佳答案

这是非常奇怪的代码,具有未定义的行为。您对此有何期望:

int n;  // No value!
int str[n];

要做什么?您将得到一个长度未知的数组,因为 nstr 声明处没有值。

如果您希望当 nscanf() 给定值时,编译器会神奇地“时间旅行”回到 str[n],那么……这不是 Co 的工作方式,你真的应该多读一点关于这门语言的知识。并使用您可以从环境中获得的所有警告进行编译。

作为一个额外的细节,即使它被修复以便 n 有一个值,for 循环也会溢出数组并给你未定义的行为再次

对于大小为 m 的数组,循环头应为

for (size_t i = 0; i < m; ++i)

由于索引是从 0 开始的,因此您不能在数组外部的 m 处建立索引。

关于c - 为什么我的程序中第七个变量是6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42386948/

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