以下主要计划:
#include <stdio.h>
void set_flag(int* flag_holder, int flag_position);
int check_flag(int flag_holder, int flag_position);
int main(int argc, char* argv[])
{
int flag_holder = 0;
int i;
set_flag(&flag_holder, 3);
set_flag(&flag_holder, 16);
set_flag(&flag_holder, 31);
for(i=31; i>=0; i--)
{
printf("%d", check_flag(flag_holder, i));
if(i%4 == 0)
{
printf(" ");
}
}
printf("\n");
return 0;
}
编写set_flag和check_flag定义的代码,以便输出程序 看起来如下: 您可以将set_flag函数视为取整数并确保第n位为1。 check_flag 函数只返回一个整数,当第n位为零时为0,当它为1时返回1.你可以找到移位
输出应为
1000 0000 0000 0001 0000 0000 000 1000
我不明白问题的大胆部分。
有人可以向我解释这个问题。所以我应该检查整数的第n位。但是初始整数是0.意味着没有第n位的值为1.所以我应该在这做什么?
答案 0 :(得分:1)
它们意味着set_flag
函数修改其第一个参数指向的值,以便设置第(n + 1)个位。