gpt4 book ai didi

c - 程序打印全 1?

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

我想要一个用 1 和 0 填充的数字并将其转换为 bool 值。但是,当我运行我的代码时,它打印出来的都是 1。 My code

我几乎完成了所有代码,我知道我可能只是遗漏了一部分。

unsigned int booltoint(char number[], int length)
{
int i;
bool check;
for(i = 0; i < length; i++)
{
if(number[i] == 0)
{
check = false;
printf("%d\n", check);
}
else
{
check = true;
printf("%d\n", check);
}
}
return check;
}


int main()
{
int length;
char number[] = "11001100";


length = strlen(number);
booltoint(number, length);

}

最佳答案

问题是您正在比较 char 类型和 int 类型。

虽然 char 在技术上是一个 int,但它基于 ASCII values .这意味着,当您在 char 数组编号的索引 i 处获取 char 时,您将返回该 char 的可打印版本。

例如:
字符 '0' = 整数 48
字符 '1' = 整数 49
(您可以在链接的图表中看到这些值。)

您的检查将始终返回 false,因为没有 ASCII 值是 0(期望 NULL,但那是另一回事)。

纠正相等性检查的最简单(也是最易读/可维护)的方法是这样的:

if (number[i] == '0')

if (number[i] == '1')

要查看不同数字的 ASCII 表示,您可以运行如下代码:

int  i;

for (i=32; i<127; i++) {
printf("%d: '%c'\n", i, i);
}

这也是了解与 ASCII 和控制字符相关的位值的好时机。

如果您想压缩代码以便更容易地查看实际情况,请查看三元运算符。

关于c - 程序打印全 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56728615/

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