gpt4 book ai didi

c - 无限循环 - 发生了什么?

转载 作者:太空宇宙 更新时间:2023-11-04 07:25:33 25 4
gpt4 key购买 nike

我在 C 中有以下代码,它应该返回 8 位长数字字符串中每个数字的 4 位二进制表示。由于某种原因,它现在无限循环。

当前输出看起来像这样(以 12345677 作为输入):0001 0010 0011 0000 0000 0000 0000 0000 0000 ...(无穷无尽的零)。如您所见,前 3 个数字有效(我认为这很奇怪)。

这里出了什么问题?

    #include<stdio.h>
#include<stdlib.h>

#define LENGTH 8

int main()
{
char number[LENGTH];

printf("Geef nummers in : ");
scanf("%s", number);

printf("Resultaat : ");

for(int i=0; i<LENGTH; i++) {

char re[4];

re[3] = ((number[i]) & 1) ? '1' : '0';
number[i] >>= 1;
re[2] = ((number[i]) & 1) ? '1' : '0';
number[i] >>= 1;
re[1] = ((number[i]) & 1) ? '1' : '0';
number[i] >>= 1;
re[0] = ((number[i]) & 1) ? '1' : '0';
number[i] >>= 1;
re[4] = '\0';

int res = atoi(re);
printf("%04d ", res);

}

printf("\n");
}

最佳答案

你只为 re 声明了 4 个元素(03 包括在内)但是你在做 re[ 4]。您此时正在调用未定义的行为。您需要将 re 定义为:

char re[5];

关于c - 无限循环 - 发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18737084/

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