首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >打印所有1的程序?

打印所有1的程序?
EN

Stack Overflow用户
提问于 2019-06-24 08:19:53
回答 1查看 30关注 0票数 1

我想用1和0填充一个数字,并将其转换为布尔值。然而,当我运行我的代码时,它输出的都是1。My code

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

代码语言:javascript
复制
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);

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-24 08:33:29

问题是您正在将char类型与int类型进行比较。

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

例如:

字符'0‘= int 48

字符'1‘=整型49

(您可以在链接图表中看到这些值。)

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

纠正相等性检查的最简单(也是最具可读性/可维护性)的方法如下:

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

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

要查看不同数字的ASCII表示,可以运行如下命令:

代码语言:javascript
复制
int  i;

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

这也是学习位值的好时机,因为它们与ASCII和控制字符相关。

如果您想压缩代码,以便更容易地看到实际发生了什么,请查看三元运算符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56728615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档