C++ 打印字符的二进制格式

C++ 打印字符的二进制格式,c++,c,C++,C,几个月前,我编写了一个函数来打印char的二进制格式,它是这样的,并且工作得很好: void PrnCharBit(char x) { int i,mask; for(i=CHAR_BIT;i>=1;i--) { mask=(1<<(i-1))&x; putchar((mask==0)?'0':'1'); } putchar('\n'); }

几个月前,我编写了一个函数来打印
char
的二进制格式,它是这样的,并且工作得很好:

void PrnCharBit(char x)
{
        int i,mask;
        for(i=CHAR_BIT;i>=1;i--)
        {
            mask=(1<<(i-1))&x;
            putchar((mask==0)?'0':'1');
        }
        putchar('\n');
}
void PrnCharBit(字符x)
{
int i,面罩;
对于(i=CHAR\u位;i>=1;i--)
{
掩码=(1运算符。相等运算符(
=
)在按位操作(
&
)之前排序

叮当声警告如下

&优先级低于==;将首先计算==


在第二个函数中,将
if(mask&c==0)
更改为
if((mask&c)==0)

为什么不直接使用第一个函数呢?它可以工作并且更短。字符位的值是多少?如果PrnCharBit(“#”)Clang,警告:二进制代码的值应该是什么?因为这是标记C++,代码为STD::CUT运算符优先级。
按标准为1(不考虑底层平台)。thx!错误已修复!(奇怪的是&低于==)
void PrnCharBit(char c)
{
    int i;
    char mask=0;
    //printf("%d\n",CHAR_MAX);
    for(i=sizeof(char)*CHAR_BIT-1;i>=0;i--)
    {
        mask=1<<i;
        if(mask&c==0) putchar('0');
        else putchar('1');
    }
    putchar('\n');
}