gpt4 book ai didi

c - 按位运算,位的打印取决于先放哪个putchar ...?

转载 作者:太空宇宙 更新时间:2023-11-04 08:46:14 25 4
gpt4 key购买 nike

我只是想将一个 unsigned int 打印成位,但它显示我的代码:

void checksWithOne(unsigned int userInput)
{
int i = 0, a = 0;

for (i = sizeof(int)*8-1; i >= 0; i--)
{
a = (userInput&(1<<i));
if (a==1)
{
putchar('1');
}
else
{
putchar('0');
}
}
printf("\n");
}

仅当 if 语句被这样更改(替换 1 和 0)时才有效:

      if (a==0)
{
putchar('0');
}
else
{
putchar('1');
}

我不明白为什么会这样……有什么想法吗?

谢谢

最佳答案

第二个代码有效,因为你打印了 '0'什么时候a是== 0否则 '1' .因此在第一个代码段中,if(a==1)应该是 if(a)这意味着打印 1如果a不是 0 (记住每个非零值在 C 中都是真的)。

事情是a = (userInput & (1<<i));并不总是 1但是a可以是一个数字,要么是零,要么是一个只有一位是 1 的数字(例如 ...00010000)

关于c - 按位运算,位的打印取决于先放哪个putchar ...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21572108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com