Запрос относительно операций с персонажами - PullRequest
0 голосов
/ 10 мая 2010

Пожалуйста, объясните следующий фрагмент кода ..

   printf("%c\n",0+'0'); --> returns 0
   printf("%c\n",1+'0'); --> returns 1
   printf("%c\n",0+'1'); --> returns 1
   printf("%c\n",1+'1'); --> returns 2

Thanx.

Ответы [ 3 ]

3 голосов
/ 10 мая 2010

Посмотрите на таблицу ASCII . «0» имеет код 48. Таким образом, «0» + 1 дает 49, то есть «1». Таким образом, каждый символ на самом деле является целым числом. Вы добавляете к нему другое целое число, а затем, поскольку вы указываете «% c» в printf, вы заставляете его считать его символом. Он проверяет свою таблицу ASCII и после некоторого обдумывания решает распечатать вывод на экран.

1 голос
/ 10 мая 2010

Благодаря %c все они печатают символьный эквивалент аргумента.

printf("%c\n",0+'0');

Добавляет ноль к значению ASCII нулевого символа, которое равно 48: 48 + 0 = 48.
Попробуйте printf("%d\n", '0');, чтобы получить значение ASCII.

printf("%c\n",1+'0'); // 1 + 48 = 49 which is the character `1`
printf("%c\n",0+'1'); // 0 + 49 which is again `1`
printf("%c\n",1+'1'); //left as an exercise
1 голос
/ 10 мая 2010

'0' дает значение ASCII символа 0, которое равно 48. К этому вы добавляете 0, чтобы получить 48. Затем вы печатаете 48 обратно как символ, который дает 0

Аналогично, следующий добавляет 1 к 48, чтобы дать 49, что при печати в виде символа дает 1

...