gpt4 book ai didi

c - 分段故障;尝试在 C 中将 int 转换为二进制

转载 作者:行者123 更新时间:2023-11-30 18:48:42 25 4
gpt4 key购买 nike

我正在尝试使用以下方法将整数转换为二进制:

int * intToBinary(int i) {
//return value
int binary[] = {'\0'};
int index = 0;

for (int x = i; x != 0; x /= 2) {
binary[index] = x%2;
index++;
}

return binary;
}

这个想法是我将反转数组(因为这将是正确的答案)并且我将获得转换。我已经尝试在 Python 中执行此操作并且效果非常好。

问题:当我运行上述方法时,我收到 Segmentation Failure: 11 错误。我知道如果我使用超出数组索引的 int 通常会发生这种情况,但这看起来不是问题。有谁知道为什么我不断收到此错误?

最佳答案

存在两个问题,都会导致未定义的行为

第一个是返回一个指向本地数组binary的指针。一旦函数返回,该数组将不再存在,留下一个流浪指针。但这可能不是导致崩溃的原因。

崩溃的最可能原因是数组binary只有一个元素。这意味着您的循环将超出其范围。对于 32 位整数,它需要包含 32 个元素。

第二个问题很容易解决,只需设置正确的大小即可。第一个问题有点难,但我的建议是您在调用函数中创建数组,并将其作为参数传递。

关于c - 分段故障;尝试在 C 中将 int 转换为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45017380/

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