2016-11-23 10 views
-2

Я изучаю C из книги K & R, я нашел предлагаемое решение онлайн для задачи в книге. Задачу и предложенный ответ можно найти здесь (последнее решение что страница) http://clc-wiki.net/wiki/K%26R2_solutions:Chapter_1:Exercise_13Добавить целое число на символ в C

Где есть эта строка кода:

putchar('\260' + (MIN(wl[j]-i, 2))); 

Так, например, если функция MIN возвращается 2, мы добавим его в '\ 260'

putchar('\260' + 2); 

Что это за метод добавления int в char? что это за значение «\ 260»?

+1

Используйте другую книгу - эта книга далеко далеко устарела. – KevinDTimm

+0

Почему кто-нибудь читал K & R? c11, C++ 14, что бы то ни было, но не K & R! – iolo

+0

@KevinDTimm любые рекомендации?, @ Iolo Это книга, врученная нам академическим учреждением, в которое я поступил. – blender28

ответ

0

'\260' - символ, представленный восьмеричным номером 260, который является 176 в десятичной форме.

Использование putchar('\260' + 2); основано на графическом представлении символа, отличного от ASCII, представленного целым значением 178.

+0

Забавно, что 'int i = '\ 260'' будет считать константу rhs как char и выдавать' i = -80' путем расширения ее знака (на платформе 'signed char', конечно ...) https: //ideone.com/YdV6Dz –

+0

@EugeneSh: Правильный вывод, неправильные рассуждения. Символьные константы имеют тип 'int'. Знак значения константы символа вне диапазона 0 .. 'CHAR_MAX' определяется знакомностью типа' char'. [N1570] (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf) 6.4.4.4p10. –

+0

@KeithThompson Спасибо. В нем говорится, что это реализация. * ".. содержащий символ или escape-последовательность, которая не сопоставляется однобайтовому символу исполнения , определяется реализацией." * –