gpt4 book ai didi

c - 程序将 int 转换为 ASCII,我不知道为什么?

转载 作者:行者123 更新时间:2023-11-30 14:32:51 24 4
gpt4 key购买 nike

所以我试图将不同基数的数字转换为 10。我尝试调试,我 100% 确定问题出在这里:nr[i]=j ;它的作用是获取整数 j 并将其转换为 ASCII,而不管 nr[i] 是一个 char 数组。我能做什么来解决这个问题?

    int baza,cifra,nrB10,i,j,x,corect;
char nr[32];
char conversie[36]={'0','1','2','3','4','5','6','7','8','9','10','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
printf("Base between 2 and %d):",BAZA_MAX);
scanf("%d",&baza);
printf("Nr. in base %d: ",baza);
scanf("%31s",nr);
nrB10=0;
corect=0;
x=strlen(nr)-1;
for (i=0;i<=x;i++) {
corect=0;
for (j=0;j<baza;j++) {
if (nr[i]==conversie[j]) {
corect=1;
nr[i]=j;
}
}
if (corect==0) {
printf("Numar gresit!");
break;
}
}
for (i=0;i<=3;i++) {
printf("%c",nr[i]);
}
return 0;

最佳答案

当您将数字存储到变量时,它只是一个数字。它是一种位模式,计算机并不真正知道(或关心)它代表什么。当您指定 int、char 或其他任何值时,您是在告诉编译器如何使用它。这样它就可以发现错误。就您而言,当您打印时,数字“变成”您认为的样子。 printf 中的说明符决定了这一点。以下是两个示例:

printf("%c", 65);    // It will print an A

printf("%d", 'A'); // It will print 65

同样,如果您可以查看计算机持有“A”和 65 的内部位置,它们看起来会完全相同。查看内存转储,您无法分辨哪个是哪个。

在这里,我将做同样的事情,并添加十六进制以增加娱乐性:

int n = 65;
printf("%c, %d, %x", n, n, n); // It prints, A, 65, 41

关于c - 程序将 int 转换为 ASCII,我不知道为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59653948/

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