本帖最后由 cola_ 于 2020-7-31 16:40 编辑
求助各位大佬给解释一下程序,小弟我刚步入C语言才疏学浅看不懂这个例子
程序是读取到两个非负整数安位进行逻辑与和逻辑或等运行,但是我看不懂他自定义的函数,也不知道这样写有什么好处
#include <stdio.h>
int count_bits(unsigned x)
{
int count = 0;
while(x) {
if (x & 1U) count++;
x >>= 1;
}
return (count);
}
int int_bits(void)
{
return count_bits(~0U);
}
int print_bits(unsigned x)
{
int i;
for(i = int_bits() - 1; i >= 0; i--)
putchar(((x >> i) & 1U) ? '1' : '0');
}
int main(void)
{
unsigned na, nb;
puts("请输入两个非负整数。");
printf("整数A:"); scanf("%u", &na);
printf("整数B:"); scanf("%u", &nb);
printf("\nA ="); print_bits(na);
printf("\nB ="); print_bits(nb);
printf("\nA & B ="); print_bits(na & nb);
printf("\nA | B ="); print_bits(na | nb);
printf("\nA ^ B ="); print_bits(na ^ nb);
printf("\n~A ="); print_bits(~na);
printf("\n~B ="); print_bits(~nb);
putchar('\n');
return (0);
}
|