#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;
}
我正在学习考试,这是一个解决的练习,答案是:12480,因为%c只占最后4位。我不明白为什么,因为我知道sizeof char是1个字节。
答案 0 :(得分:2)
让我们看看48的二进制表示:
2^ 7 6 5 4 3 2 1 0
---------------
0 0 1 1 0 0 0 0
未设置最后4位。在循环的前4次迭代中,掩码设置结果中的其中一个位,结果反映了更改。在最后一次迭代中,掩码设置了一个已设置的位,因此打印的最后一个字符没有变化。
至于打印的内容,ASCII 48是0
的字符代码。在那之后,以下数字是有序的。当您屏蔽前4次迭代的值时,因为值48中的所有位都未在掩码中设置,所以它实际上与添加相同。因此,打印的前4个字符的ASCII值为49(1
),50(2
),52(4
)和56(8
)。
答案 1 :(得分:1)
字符代码48通常为0
。当它或一个,它打印数字1.然后它打印数字2,4,8。最后,48 | 16 = 48,所以它打印0。
答案 2 :(得分:0)
这需要他们所有,但是最后一次你或那个1已经是1(48是二进制110000)