Member 12594779 Ответов: 1

Почему на выходе получается 4?


#include<stdio.h>
int main(){
int k=55,l;
l=(k==65?printf("k=65"):printf("k!=65"));
printf("\n\n%d\n",l);
return 0;
}


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

выход:


к=65
4

// почему этот вывод?

1 Ответов

Рейтинг:
1

OriginalGriff

Это не.
Он печатает:

k!=65

5
Попробуй и увидишь!
Но если эта линия
int k=55,l;
Изменено на
int k=65,l;

Это был бы.

Потому что printf возвращает количество напечатанных символов, которые вы используете для загрузки k и затем l
Фактически то, что вы написали, было:
int main()
    {
    int k=55,l;
    if (k==65)
        k = printf("k=65");
    else
        k = printf("k!=65");
    l = k;
    printf("\n\n%d\n",l);
    return 0;
    }
Более ясный способ точно описать то, что вы сделали, был бы:
int main()
    {
    int k=55,l;
    l = k = printf(k == 65 ? "k=65" : "k!=65");
    printf("\n\n%d\n",l);
    return 0;
    }