Yes, You all are right.
I have experimented this.
C maintains a stack for arguments.
Code:
printf ("%c %c", 'A', 'B');
In this case, 'A' is first pop-out and then 'B'. (A character is 8-bit sequence hence first that 8-bits and then for next character 'B', next 8-bits)
Now try to print the following:
Code:
printf ("%c %c", 283467841601LL);
this will give you the same answer.
First find the Hex Equivalent of it.
It comes out to be: 0x4200000041
0x41 = 65 (ASCII code of 'A')
0x42 = 66 (ASCII code of 'B')
It adds 6 Hex Zeros (6 * 4 = 24 bits) in between. This is because when we print any character by printf it is first converted to an Integer ( 32-bit long).
So you can prove it as follows:
00000041 = 8 Hex digits = 8 * 4 bits = 32 bits = 4 bytes
So first from the stack, 0x00000041 comes out and gives us 'A' and then 0x00000042 which gives us 'B'.