有人可以向我解释这段代码吗?为什么我得到0而不是16?
问题描述:
此代码输出12480 ..为什么?我预计它会打印124816.有人可以向我解释吗?有人可以向我解释这段代码吗?为什么我得到0而不是16?
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;
}
答
您打印一个变量char
,你将永远不会得到16
(这是字符)出这一点。
你有48 = 110000
,当你bitwise-or
它1
你110001 = 49
从ASCII转换为char
时将等于字符1
。
下一次你得到110000 | 10 = 110010 = 50
这就是2
。
这一直持续到第5次迭代时110000 | 10000 = 110000 = 48
这是0
。
*为什么*你预计它会打印124816? (你也可以通过这个循环第五次更简单地描述这个问题,这是你看到的东西,显然你不期望......) –
是的。不仅是第5次,但如果我将for循环更改为(i = 1; i hago