此代码输出12480 ..为什么?我预计它会打印124816.有人可以向我解释一下吗?
int main()
{
char c = 48; // From ASCII one can find that char 48 represents 0.
int i , mask = 1;
for(i = 1; i <= 5; i++)
{
printf("%c", c|mask); // Here print the char formatted output
mask = mask << 1;
}
return 0;
}
答案 0 :(得分:1)
您正在将一个变量打印为char
,您将永远不会获得16
(两个字符)。
您有48 = 110000
,当bitwise-or
与1
110001 = 49
时,您获得char
,当从ASCII转换为1
时,它将等于字符{ {1}}。
下次您获得110000 | 10 = 110010 = 50
时2
。
这一直持续到110000 | 10000 = 110000 = 48
为0
时达到第5次迭代。