C中int和char之间的数值运算

时间:2018-05-16 17:24:38

标签: c char type-conversion int

我想知道数据是如何真正存储的,因为例如超越直觉是弱的。

我相信,任何价值都有它的数字识别;作为' 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");

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

正如WhozCraig所说,我一直在寻找( - &#34; 0&#34;),其中数值为&#34; 0&#34;是48岁。