gpt4 book ai didi

c - 为什么未排序的数组在我的代码运行时发生变化?

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

我想对给定的 unsorted Array 数组进行排序。在此之前,我需要执行以下步骤。但它总是取数字 9 然后重复数字 8

#include<stdio.h>

int main(){

int unsortedArray[] = {9,8,7,6,5,4,3,2,1};

int arr1[9];
int arr2[9];

int arr1Counter = 0;
int arr2Counter = 0;

int i;int n;
for(i=0; i<9; i++){

// n = unsortedArray[i];

int j;
for(j=0; j<9; j++){

if(unsortedArray[j] != unsortedArray[i]){

if(unsortedArray[j] > unsortedArray[i]){

arr2[arr2Counter] = unsortedArray[i];
arr2Counter++;

}else{

arr1[arr1Counter] = unsortedArray[i];
arr1Counter++;
}
}
}
}


int k;
for(k=0; k<9; k++){
printf("%d ", unsortedArray[k]);
}


return 0;
}

最佳答案

你有未定义的行为因为arr2[9]溢出。在你的嵌套循环中,这部分

arr2[arr2Counter] = unsortedArray[i];
arr2Counter++;

被执行了 36 次。结果,您有越界访问,这会导致未定义的行为。在我的机器上,8 7 6 5 4 3 2 1被打印出来,但程序随后崩溃,因为堆栈已损坏。

考虑程序的逻辑。里面的部分for (j = 0; j < 9; j++) {一共执行了72次,每次将条目添加到 arr1arr2 .他们都可以持有 10每个值,所以它们不能容纳所有 72值(value)观。

关于c - 为什么未排序的数组在我的代码运行时发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56149195/

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