Почему на выходе получается 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
// почему этот вывод?
#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; }
Это не.
Он печатает:
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; }