%c如何在C程序中打印值?

Cha*_*eep 7 c

以下程序产生12480作为输出.

#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;
}
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是,"%c"如何在每个循环后打印整数值1,2,4,8,0.它应该打印一个字符作为值.如果我只是使用以下程序,

#include<stdio.h>

int main()
{
    char c=48;
    int i, mask=01;
    printf("%c",c); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它打印0但是当我将标识符%c更改为%d时它打印48.任何人都可以告诉我这是怎么回事!?

Abh*_*ogi 7

如果使用%c,c将打印相应的ASCII键作为整数值.

48的二进制是110000.1的二进制是000001.

or他们,110000 | 000001给出110001相当于49 in decimal base 10.

根据ASCII表,49,50,51等的相应ascii值为'1','2','3'等.