gpt4 book ai didi

c - 为什么我同样的 C 代码在编译时会产生不一致的结果

转载 作者:太空宇宙 更新时间:2023-11-04 04:12:54 27 4
gpt4 key购买 nike

我写了一些排序算法。为了简单起见,我选择了一个具有唯一值的小数组。每当我有时编译代码时,我都会得到正确的答案,但有时我会得到不同的错误答案。我想知道是什么导致了这个问题。请注意,我使用的是相同的代码。

我正在使用 GCC 4.2.1

我试过一个在线编译器,它给出了正确的答案。

#include <stdio.h>

int main(){
int i,j,k,l;
int A[10]={2,10,6,24,1,-5,23,0,12,-100};

for(i=0;i<10;i++){
if(A[i+1]<A[i]){
l=A[i+1];
for(j=0;j<=i;j++){
if((A[j]<A[i+1])&&(A[j+1]>A[i+1])){
for(k=i;k>=j;k--){
A[k+1]=A[k];
}
A[j+1]=l;
}
else if(A[0]>A[i+1]){
for(k=i;k>=0;k--){
A[k+1]=A[k];
}
A[0]=l;
}
}
}
}

for(i=0;i<10;i++){
printf("%d\n",A[i]);
}
}

有时它给出:{-100,-5,0,1、2、6、10,12,23、24,}有时它给出:-791216026,-100,-5,0,1、2、6、10,12,23、中止陷阱:6

最佳答案

您的程序读取数组。

i等于 9 , A[j+1]i == j 时读取数组这是你的 for(j=0;j<=i;j++) 允许的循环停止条件。

这也适用于 A[k+1]

关于c - 为什么我同样的 C 代码在编译时会产生不一致的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55326011/

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