With reference to the answer given here, what output one must expect from the following code:
#include<stdio.h>
int main()
{
    int a=65;
    printf("%d\n",printf("%d\
    \n",a));
    return 0;
}
It gives the output:
65
4
But to me it would seem that it should give this:
65
3
Why is the output 65 4?
You are printing 4 characters <tab>, \n, 6, and 5, so the result you're getting makes total sense.
Notice that the \ at the end of this printf("%d\n",printf("%d\ line, will include all of the indentation of the next line into the formatting string. This indentation was originally a <tab> character when you ran your file.
The reason why some people are reporting the ouput of 65 7 is that StackOverflow changes all tabs in the pasted code into 4 spaces, so the code they copied from your question was not the same code you ran on your machine.
See this demo, which shows the existance of the <tab> in the output (online version):
#include<stdio.h>
int main()
{
    int a=65;
    printf("%d\n",printf("%d\
    <--tab here\n",a));
    return 0;
}
Output:
65 <--tab here 15
If you remove the weird, totally unnecessary, and obviously error prone line continuation, it will print the expected output just fine:
#include<stdio.h>
int main()
{
    int a=65;
    printf("%d\n",printf("%d\n",a));
    return 0;
}
Output:
65 3
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With