Путаница по поводу выхода - PullRequest
1 голос
/ 07 октября 2010
#include<stdio.h>
int main(void)
{
    int i=1,j=-1;
    if((printf("%d",i))<(printf("%d",j)))
        printf("%d",i);
    else 
        printf("%d",j);
    return 0;
}

Поскольку printf() возвращает количество успешно напечатанных символов, условие будет if(1<1), что ложно, но если часть выполнена и вывод 1 -1 1.Почему это происходит?

Ответы [ 4 ]

5 голосов
/ 07 октября 2010

Я думаю, это довольно очевидно: «1» - один символ, «-1» - два. Один меньше двух.

2 голосов
/ 07 октября 2010

printf возвращает количество записанных символов (не только цифр).

Так printf("%d",-1) вернется 2 не 1

Аналогично printf("%d",1) вернет 1

Создание условия в if true.

1 голос
/ 07 октября 2010

Для -1 количество напечатанных символов равно 2, следовательно, если условие выполнено.

1 голос
/ 07 октября 2010

Поскольку при печати j печатается «-1», это два символа. поэтому 1 <2 верно. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...