gpt4 book ai didi

c# - 在 C 和 C# 中处理数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:34:09 26 4
gpt4 key购买 nike

我试图在数组中插入一个元素,但由于数组索引越界而失败

我在 C# 中尝试过,但失败了,但在 C 中工作正常

int[] LA = {1,3,5,7,8};
int item = 10, k = 3, n = 5;
int i = 0, j = n;
n = n + 1;
while( j >= k)
{
LA[j+1] = LA[j];
j = j - 1;
}
LA[k] = item;

但它在 c 中有效

int LA[] = {1,3,5,7,8};
int item = 10, k = 3, n = 5;
int i = 0, j = n;
n = n + 1;
while( j >= k) {
printf("j+1 =%d",j+1);
LA[j+1] = LA[j];
j = j - 1;
}

谁能解释一下这是为什么?其他语言会不断变化吗?谢谢。

很多答案说它在 c 中不起作用所以我上传了一张图片 ![enter image description here ] 1

最佳答案

哦不,这不“有效”,看起来很明显越界写作,因此你会得到未定义的行为。您不能在 C 中动态增长数组,它们在“创建”时是静态大小的。

请注意,C 并没有说做未定义的事情会导致任何特定的可测量结果[*],因此它看起来可以做预期的事情,但仍然完全被破坏。 p>

[*]:这就是“未定义”的意思: 没有定义将要发生的事情。有些人似乎将其解释为“我们将获得错误处理程序来触发他们称之为‘未定义行为’的东西”,但事实并非如此。任何事情都可能发生。

关于c# - 在 C 和 C# 中处理数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54689457/

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