Почему printf выводит это в моей программе? - PullRequest
2 голосов
/ 30 января 2011
#include<stdio.h>

int main()
{
    printf("%d",printf("%d %d",2,2) & printf("%d %d",2,2));
}

Вывод выглядит так: 2 2 2 2 3

Я не могу понять, почему вывод такой.Есть идеи?

1 Ответ

15 голосов
/ 30 января 2011

printf возвращает количество напечатанных символов, поэтому вот объяснение:

printf("%d",printf("%d %d",2,2) & printf("%d %d",2,2));
\_________/ \_________________/ | \_________________/
     |              |           |          |
     |         prints "2 2"     |    prints "2 2"
     |         and returns 3    |    and returns 3
     |                          |
     |                    computes 3 & 3
     |                   (which equals 3)
     |
 prints "3"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...