Числовые операции между int и char в C - PullRequest
0 голосов
/ 16 мая 2018

Я хотел бы знать, как на самом деле хранятся данные, потому что в другом случае слабая интуиция.

Я считал, что любое значение имеет свое числовое признание;как «а» имеет значение 48;поэтому я предположил, что в любой ситуации я могу уменьшить 48 как «а» (например, (100 - «a» == 52)).

Реальность кажется другой.

Так;

когда можно уменьшить значение 'a', чтобы получить значение типа int?что я должен использовать здесь, чтобы это выглядело более интуитивно?

...

Программа едва завершена, однако функция принимает массив символов и ей нужно получить значение типа int (3с одного из персонажей./ * для этого сценария * /

Спасибо за помощь!

/* 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 голосов
/ 05 июня 2018

Как сказал WhozCraig , я искал (- "0"), где числовое значение "0" равно 48.

0 голосов
/ 16 мая 2018

«Значение» 'a', то есть его числовое представление, на самом деле зависит от набора символов. В большинстве случаев это Американский стандартный код для обмена информацией (ASCII) или набор символов, где первые 128 кодовых точек идентичны ASCII. Однако значение ASCII для 'a' на самом деле равно 97, а не 48.

...