gpt4 book ai didi

c - 变量神秘地变化

转载 作者:行者123 更新时间:2023-12-02 07:44:04 25 4
gpt4 key购买 nike

问题:是什么导致这些值随机变化?


信息:

我的代码:

int q = nonZero;
for(j = nonZero;j>1;j--)
{
printf("Top: %i %i\n",j,q);
qsort(tree,j,sizeof(Node),cmp);
printf("Bottom: %i %i\n",j,q);
Node t = {tree[0],tree[1],-1};
tree[0] = &t;
tree[1] = tree[j];
tree[j] = NULL;
}

不是一个复杂的小程序。从树的顶部两个节点中创建一个节点,使其成为新的顶部节点,对数组进行求值,重复。我添加了“q”作为调试值,我完全不知道到底发生了什么。如果我尝试让它运行,j 通常从 73 开始,它应该是这样,预计它将是 72,71,70,69,68...3,2 并且 q 将无限期地保持在 73。这是我的输出:

Top: 73 73
Bottom: -796584576 32767
Segmentation fault

但这还不是全部,无需重新编译,我得到了:

Top: 73 73
Bottom: 0 0
Segmentation fault

它始终会给我这两个输出之一。几次运行后,我看到 32767 从未改变,q 值,但 j 值,这里是 -796584576,总是一些不同的大得离谱的负数。任何人都知道为什么 qsort 似乎正在改变我的 j 值,以及似乎完全不相关的 q 值?

最佳答案

我不确定这是不是你的问题,但由于 t 是一个局部变量,它会在循环结束时超出范围,因此将它分配给 tree [0] 使 tree[0] 未定义。

关于c - 变量神秘地变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8348923/

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