【问题标题】:When I try to store a character it stores it as a int. Is there a way to fix this?当我尝试存储一个字符时,它将它存储为一个 int。有没有办法解决这个问题?
【发布时间】:2018-11-08 22:02:18
【问题描述】:

为什么当我尝试存储一个字符时,它会将它存储为 C 中的 int 所以我有代码:

char p = (char)'w';

tree_insert(&root,p);

但是它只是传递数字 119 而不是实际的字母 w,但我需要它传递字母 w。

任何帮助都会很棒 这是我对 tree_insert 的声明,以防你需要它:

void tree_insert ( struct Tree_Node**root, char letter );  

【问题讨论】:

  • 你怎么知道的?字母w数字119。
  • 当我将鼠标悬停在显示 (int) 119 的字符上,然后如果我尝试将其打印出来,它会打印 119
  • 那你没有正确打印字符。

标签: c char int


【解决方案1】:

您如何看待这个值?如果您使用的是 printf,请务必确保以正确的方式打印出变量。此代码应打印您的字符:

    printf("%c\n", p);

我怀疑您的打印语句有一个%d,我在其中放置了%c。发生这种情况的原因是因为 C 将字符存储在 8 位中,对于您的字符 'w'

    0 1 1 1  0 1 1 1
    bin -> dec = 119

当您告诉 C 将这 8 位打印为 char 时,它必须知道如何解释它们。你使用format specifiers 告诉C 它到底在看什么。

【讨论】:

  • 但它传递的是 119 而不是字母 w
  • 是的,因为119 == 'w'
  • 但是我如何让它通过 w 呢?
  • @David Neill Computers 只能处理数字。因此,所有字符都已映射到某些特定数字。谷歌搜索“ASCII 表”,作为开始。稍后,您可能想要检查 UTF-8 的字符表示。
猜你喜欢
  • 2021-03-19
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
相关资源
最近更新 更多