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 or
them, 110000 | 000001
gives 110001
which is equivalent to 49 in decimal base 10
.
According to the ASCII table, corresponding ascii values for 49, 50, 51, etc are '1', '2', '3', etc.
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