2016-09-19 7 views
-3

У меня есть вопрос относительно функции putchar в C. Пока я учился, я наткнулся на следующее утверждение: printf("%c\n",putchar('A'+1)+2); Когда я компилирую и выполняю программу, результатом является BD. Я понял, что когда мы наберем putchar('A' + 1), результат будет B, но как мы получили D? Разве эта функция не возвращает один символ за раз? Заранее спасибоconfused about putchar result in C

+4

'putchar' возвращает символ, написанный ('B'), а затем вы добавляете 2 к этому ('D') и передаете его как аргумент' printf'. –

+1

[Эта ссылка 'putchar'] (http://en.cppreference.com/w/c/io/putchar) должна быть очень полезной. –

+1

Что вы ожидали? Что вы не поняли в man-странице? Что вы видите в отладчике? «Разве эта функция не возвращает один символ за раз?» - сколько символов '' D''? – Olaf

ответ

1

putchar делает две вещи:

  1. Пишущие символ «B», чтобы stdout
  2. Возвращение символа «B» в результате вызова функции.

Поскольку «B» возвращается putchar, то к нему добавляется 2, что делает его «D». Это передается как параметр printf, который затем записывает «D \ n» в stdout.