#c #for-loop #integer #character #ascii
#c #для цикла #целое число #символ #ascii
Вопрос:
Если вы запустите следующий код, вы получите символы ASCII, даже если мы используем int i
within %c
внутри цикла for .
#include <stdio.h>
int main()
{
int i;
for (i = 0; i <= 255; i ) /*ASCII values ranges from 0-255*/
{
printf("ASCII value of character %c = %dn", i, i);
}
return 0;
}
Не могли бы вы, пожалуйста, посоветовать, как это возможно, поскольку внутри ASCII есть символы?
Комментарии:
1. Целые числа, меньшие, чем
int
, автоматически повышаютсяint
при передачеprintf
переменной функции. Передаваемый вами «символ» является целым числом. Итак, когда вы передавалиchar
переменную, она автоматически повышалась вint
любом случае, и это%c
ожидаемый тип (поэтому предупреждение не было дано).%c
Отличается от%d
only тем, что переданное значение отображается на выходе .2. «внутри ASCII есть символы» — нет, есть целые числа. Они преобразуются в видимые символы устройством вывода. Их визуальная форма (или функция управления) определяется таблицей ASCII.
3. @el_noobito Да, это отлично работает и является отличной демонстрацией того факта, что, по крайней мере, в C символы — это просто маленькие целые числа. Мой вопрос к вам: каким образом вы ожидали, что он завершится неудачей? Вы ожидали получить предупреждение компилятора в виде »
format specifies type 'char' but the argument has type 'int'
«? Или вы ожидали получить вывод мусора, как вы это делаете, попробуйте что-то вродеprintf("%d", 3.14)
?4. Спасибо за ваши комментарии. Да, я ожидал, что произойдет сбой, когда я его скомпилировал.
Ответ №1:
Каждая переменная в компьютере хранится как двоичная, и ее значение будет зависеть от определенного вами типа. Например, в памяти сохраняется значение 1010
. Если вы приведете его как int
, он напечатает -6, если вы приведете его как unsigned int
, он напечатает 10. То же самое для int и char . Это зависит от вас
Ответ №2:
printf() — Печать в формате мы используем спецификаторы формата для указания формата данной переменной, спецификатор формата %d для отображения значения целочисленной переменной. %c используется для отображения символов в виде значений ASCII в диапазоне от 0 до 256, %c выведет соответствующий символ символа числа в целом числе i
Комментарии:
1. Хммм «поскольку значения ASCII варьируются от 0-256» -> Я подозреваю, что вы хотите 0-255. Обратите внимание, что ASCII определяет только 0-127,