【问题标题】:Numerical operations between int and char in CC中int和char之间的数值运算
【发布时间】:2018-10-26 20:32:35
【问题描述】:

我想知道数据是如何真正存储的,因为在示例之外,直觉很弱。

我相信,任何价值都有它的数字识别;因为“a”的值为 48;所以我假设,在任何情况下,我都可以将 48 减为 'a'(例如(100 - 'a' == 52))。

现实似乎有所不同。

所以;

我什么时候可以用 'a' 递减以获得类似 int 的值? 我应该在这里使用什么,这样看起来更直观?

...

程序几乎没有完成,但是函数需要一个字符数组,它需要从一个字符中获取值 (3) 的 int。 /* 对于这种情况 */

感谢您的帮助!

/* command reader */
int cr (char a[])
{
    printf("%s\n", a);

    /* command sequence */
    char co[350]; /* <-- change later */

    for (int cri = 0, coi = 0; a[cri]; cri++, coi++)
    {
        printf("%c ", a[cri]);

        co[coi] = a[cri];
    }

    int ec (char co[])
    {
        printf("\n%s co\n", co);
        printf("\n%c co1\n", co[1]);

        co[1] = co[1];

        printf("\n basic: %d\n\n", co[1]); /* 51 */

        co[2] = co[1] - 'a';

        printf("\n charred out: %d\n\n", co[2]); /* -46 */

        co[3] = co[1] - 48;

        printf("\n numbered out: %d\n\n", co[3]); /* 3 */

        return 0;
    }

    ec(co);

    return 0;
}

cr("F3 R B");

【问题讨论】:

  • 仅供参考,48'0' 的 ascii 值,而不是 'a'。为什么我们使用幻数编程的杰出示例。

标签: c char type-conversion int


【解决方案1】:

'a' 的“值”,也就是它的数值表示,实际上取决于字符集。在大多数情况下,这是American Standard Code for Information Interchange (ASCII) 或前 128 个代码点与 ASCII 相同的字符集。但是,'a' 的 ASCII 值实际上是 97 而不是 48。

【讨论】:

  • 哦,谢谢...那么有没有办法让任何字符集的数值为 int (3)?
  • 我不太明白你在评论中问什么。如果问题是“我可以强制某个字符在每个字符集中使用相同的数字表示吗?”,那么答案将是:不能。
【解决方案2】:

正如WhozCraig 所说,我正在寻找(-“0”),其中“0”的数值是48。

【讨论】:

    猜你喜欢
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 2013-05-10
    相关资源
    最近更新 更多