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

提利昂

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

我正在使用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

侯赛因·纳斯尔

这与您的编译无关。如果您多次运行同一文件,则可能会发生。

由于您正在访问不包含特定值的A [10],因此您的程序可能会以不同的方式运行,如果A [10]中的值大于24,则该值将保持在其位置,并且将打印出正确的响应,否则,它将传播到您的数字之间的某个位置。因此,您丢失了最后一个数字(24),并且数组中有一个随机值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

system()产生不一致的结果

为什么在迭代过程中添加要映射的项目会产生不一致的结果?

为什么SQL Server的SOUNDEX给我不一致的结果?

为什么在数组上使用一元运算符+会在javascript中产生不一致的结果?

为什么我的视图规格不一致?

为什么Spark reduceByKey的结果不一致

相同代码中的行为不一致

为什么我的node.js代码和Postman工具发送的数据不一致?

为什么我从Google脚本中的indexOf操作中得到的结果似乎完全相同,但结果却不一致?

使用相同代码的2个测试之间的Rspec结果不一致

为什么.get()在我的不一致bot代码中不起作用?

浮子打印不一致。为什么有时会起作用?

使用echo >>会产生不一致的结果

为什么我的不一致机器人代码没有运行任何东西?

当这行GLSL计算出预期的效果时,为什么这行计算距离会产生不一致的结果?

Codeigniter加密类产生不一致的结果

流星SmartCollection产生不一致的结果

为什么我的盒子彼此不一致

为什么Gemfile语义版本控制运算符(〜>)产生一个数字不一致的结果?

为什么使用Try [Unit]的结果进行理解时会出现(不一致的)编译器错误?

为什么我对Web服务器使用telnet时,使用相同的方法会给其他人带来不一致的结果?

nproc 产生与硬件报告不一致的结果

为什么这段代码的行为不一致?

为什么我的列格式不一致?

C 方法产生不一致的结果

为什么帧率加倍会产生不一致的帧?

为什么 MATLAB 在生成多个子图时会产生不一致的 Y 轴?

COUNT() 与 PARTITION 产生不一致的结果

Swift CryptoKit 加密产生不一致的结果