Member 13100982 Ответов: 2

Как выводится 4321


int я =43; функции printf("%д",(функции printf("%д",(функции printf("%д",Я)))));

Что я уже пробовал:

Мой вывод - 434343. Кто-нибудь может мне помочь, пожалуйста

[no name]

Помочь тебе в чем?

Patrice T

В чем вопрос ?
Никакого телеграфного стиля.

2 Ответов

Рейтинг:
12

OriginalGriff

Нет, ваш выход - 4321:

printf("%d",(printf("%d",(printf("%d",i)))));
                          ^             ^
                            Prints "43" and returns the number of characters printed: 2
             ^                            ^
                Prints "2" and returns the number of characters printed: 1
^                                           ^
   Prints "1" and returns the number of characters printed: 1

Это все равно что сказать:
i = printf("%d",i);
i = printf("%d",i);
printf("%d",i);
Поскольку" самый внутренний " вызов функции должен быть выполнен первым.


Рейтинг:
11

jeron1

Взгляните сюда ссылка на printf - C++ [^]

int i =43; 
printf("%d",(printf("%d",(printf("%d",i)))));
жирный printf делается первым и печатает "43", возвращаемое значение printf равно 2 (как в 2-х печатных символах).
int i =43; 
printf("%d",(printf("%d",(printf("%d",i)>)))); 
этот жирный printf является следующим, а операнд равен 2 (возвращаемое значение из первого вызова), и поэтому печатается число "2", возвращаемое значение из этого printf равно 1, так как был напечатан только один символ.
int i =43; 
printf("%d",(printf("%d",(printf("%d",i)>))));
жирный printf здесь делается последним с номером 1 в качестве операнда, поэтому печатается "1".

Таким образом, ожидаемый результат будет "4321".