input
include <stdio.h>
int main(){
printf ( “%d %d”, printf ( “nice” ), printf ( “day” );
return 0;
}
output
daynice4 3
please explain the output
input
int main(){
printf ( “%d %d”, printf ( “nice” ), printf ( “day” );
return 0;
}
output
daynice4 3
please explain the output
actually printf returns the number of char it printed…
so 4 3 corresponding to each word…
also look at dis
This is your program
#include <stdio.h>
int main()
{
printf("%d %d", printf("nice"), printf("day"));
return 0;
}
There are a few things to look upon in this example:
printf()
functionThe value returned by a printf
statement is the number of characters it “printed”. So, printf("nice")
would return 4
and printf("day")
would return 3
. That explains the “4 3
” part in your output.
For the second part, there are different answers. But everything just boils down to the same thing – “it is compiler dependent”. Assuming a gcc compiler in a linux machine, its working can be understood as follows:
All parameters are evaluated from right-to-left.
That means, in your example, printf("day")
would be the first one to be evaluated. This prints out the string “day
” and then returns a value of 3
. This will be the value passed as the third argument to the outermost printf
(The first one is "%d %d"
). Then, printf("nice")
is evaluated. So, “nice
” gets printed, and the value returned (4
) is passed as the second argument to the outermost printf
. Now, the outermost printf
looks like printf("%d %d", 4, 3);
Thus, the final output is “daynice4 3
”