Почему char не работает, но int работает - PullRequest
1 голос
/ 16 февраля 2020
char array[]= {1,2,3,4,5,6,7,8,9,1,2,3,6,7};
printf("%c\n", array[5]);

Возвращает "". Ничего, кроме того, что когда я меняю char на int, он печатает "5" Я могу использовать цифры от -128 до 127?

int array[]= {1,2,3,4,5,6,7,8,9,1,2,3,6,7};
printf("%i\n", array[5]);

1 Ответ

4 голосов
/ 16 февраля 2020

Когда вы печатаете char, C предполагает, что сохраненное значение должно представлять ASCII кодированный текст. Доступ array[5] дает значение 6, которое соответствует значению ASCII ACK. Этот символ не может быть напечатан, поэтому вы не видите вывода.

Символ 6 представлен значением ASCII 54. Чтобы получить это значение, используйте char литерал '6'.

Например, попробуйте инициализировать ваш массив следующим образом:

char array[]= {'1','2','3','4','5','6','7','8','9','1','2','3','6','7'};

Это приведет к ожидаемому вами поведению.

Кроме того, вы можете напечатать символ в виде отформатированного целого числа, используя флаг %i вместо %c в вашем первом фрагменте.

...