Как массив символов с одинарными кавычками влияет на массив символов без кавычек? - PullRequest
0 голосов
/ 17 февраля 2020
char a[5] = { 1, 2, 3, 4, 5 };
char a[5] = { '1','2', '3', '4', '5' };

в чем разница? Это не вызывает никаких ошибок. почему?

Ответы [ 4 ]

0 голосов
/ 17 февраля 2020

На языке C символы представлены в одинарных кавычках. И все, что заключено в одну цитату, является символом. Каждый символ имеет код ASCII, связанный с ним.

ASCII , сокращенно от Американского стандартного кода для обмена информацией, является стандартом кодировки символов для связи электронов c. Коды ASCII представляют текст в компьютерах, телекоммуникационном оборудовании и других устройствах.

Пример, ASCII-код 'A' равен 65

char sampleChar = 'A'
char sampleASCII = 65

Обе символьные переменные sampleChar, sampleASCII предоставляют одинаковые значение при печати. ​​

Таким образом, в вашем случае компилятор не выдает никакой ошибки, поскольку предполагает, что вы хотите сохранить символы со значениями ASCII 1,2,3,4 и 5. Но при печати массив,

char a[5] = { '1','2', '3', '4', '5' };

он будет предоставлять символы 1 2 3 4 5 в качестве вывода. Принимая во внимание, что первый массив не обеспечит вывод на печать. Символы, соответствующие значению ASCII 1 2 3 4 5, используются для управления передачей. Значения ASCII 1, 2, 3, 4, 5 можно найти здесь

0 голосов
/ 17 февраля 2020

Символы, подобные '1', фактически похожи на макросы с их фактическими значениями ASCII. То, что сказать '1' - это то же самое, что сказать 49, поскольку это его кодовое значение ASCII. Кстати, тип char, по сути, представляет собой 8-разрядное целое число со знаком, так что вы можете присвоить ему номера, если это вас смущает.

0 голосов
/ 17 февраля 2020
char a[5] = { 1, 2, 3, 4, 5 };
char a[5] = { '1','2', '3', '4', '5' };

в чем разница?

Разница в том, что 1 и '1' имеют разные значения. 1 имеет значение 1, а '1' имеет значение цифры c код символа для символа '1'. Предполагая, что набор символов основан на ASCII, символ ASCII '1' имеет значение 49, поэтому 1 будет иметь значение 1, а '1' будет иметь значение 49.

Не повышается любые ошибки. почему?

Оба 1 и '1' (ASCII 49) находятся в диапазоне значений, поддерживаемых char, поэтому нет причин выдавать ошибку или предупреждение.

0 голосов
/ 17 февраля 2020

Это создаст массив символов так, как вы думаете, с фактическими символами 12345:

char a[5] = { '1', '2', '3', '4', '5' };

Это создаст массив символов из пяти символов с десятичными значениями ASCII от 1 до 5 :

char a[5] = { 1, 2, 3, 4, 5 };

Обратите также внимание на то, что все это не для печати:

ASCII table

Причина, по которой он не дает ошибок потому что это абсолютно правильный способ обработки символов. char в C - это просто целое число в кодировке ASCII.

...