Почему 49, 50, 51, 52 хранятся в массиве при объявлении testArray [] = {'1', '2', '3', '4', '5'}? (C программирование) - PullRequest
1 голос
/ 26 октября 2009

Почему 49, 50, 51, 52 хранятся в массиве, когда я объявляю testArray [] = {'1', '2', '3', '4', '5'}? Как я должен инициализировать массив строк? Спасибо

Ответы [ 5 ]

17 голосов
/ 26 октября 2009

Вы инициализируете массив символами , и в массиве хранятся значения ASCII этих символов.

Значения символов можно распечатать, используя что-то вроде этого:

for (int i = 0; i < sizeof(testArray)/sizeof(testArray[0]); i++) {
    printf("character '%c', ASCII value %d\n", testArray[i], testArray[i]);
}

Первое значение, напечатанное с помощью %c, интерпретирует число как значение ASCII символа для печати.То же значение, напечатанное с помощью %d, печатает само число.

4 голосов
/ 26 октября 2009

Потому что это коды ASCII для числовых символов. Чтобы иметь массив строк, вы должны сделать что-то вроде этого:

char *testArray[] = { "1", "2", "3", "4", "5" };
2 голосов
/ 26 октября 2009

Если вам нужен массив числовых значений, он должен быть инициализирован как {1,2,3,4,5}. Помещение цифр в одинарные кавычки означает, что они являются символами, а вы видите 49, 50, 51, ... коды ASCII для символов «1», «2», «3», «4».

1 голос
/ 26 октября 2009

Поскольку символы фактически сохраняются как соответствующие значения в ASCII.

Вы можете объявить свою строку следующим образом:

char * myString = "String";
1 голос
/ 26 октября 2009

, потому что 49, 50, 51 являются ASCII-кодами для 1,2,3 ... Вы инициализируете массив символов, а не строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...