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

时间:2012-02-05 11:24:10

标签: 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;
}

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

#include<stdio.h>

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

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

2 个答案:

答案 0 :(得分:7)

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

48的二进制数是110000。 二进制1是000001。

or他们,110000 | 000001提供的110001相当于49 in decimal base 10

根据ASCII table,49,50,51等的相应ascii值是&#39; 1&#39;,&#39; 2&#39;,&#39; 3&#39;等等。

答案 1 :(得分:3)

它实际打印出字符 '1''2''4'等。

c|mask的数值被解释为ASCII code'0'的ASCII码为48。

为了使代码更清晰,您可以更改

char c=48;

char c='0';

这两种形式是等效的。