The following program yields 12480 as the output.
#include<stdio.h>
int main()
{
char c=48;
int i, mask=01;
for(i=1; i<=5; i++)
{
printf("%c", c|mask);
mask = mask<<1;
}
return 0;
}
Now, my question is, how “%c” prints the integer value 1, 2, 4, 8, 0 after every loop. It should print a character as a value. If i simply use the following program,
#include<stdio.h>
int main()
{
char c=48;
int i, mask=01;
printf("%c",c);
return 0;
}
it prints 0 but when i change the identifier %c to %d it prints 48 . Can anyone please tell me how is this going!?
If you use
%c, c prints the corresponding ASCII key for the integer value.Binary of 48 is 110000.
Binary of 1 is 000001.
You
orthem,110000 | 000001gives110001which is equivalent to49 in decimal base 10.According to the ASCII table, corresponding ascii values for 49, 50, 51, etc are ‘1’, ‘2’, ‘3’, etc.