所以这是我上一篇文章的更新,但我仍然很难理解它是如何工作的。所以我给出了主要功能:
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,以便输出等于:
1000 0000 0000 0001 0000 0000 0000 1000
所以据我了解,应该使用“set_flag”函数来确保第 n 位为 1。当第 n 位为 0 时,“check_flag”函数返回一个整数,当它为 1 时返回 1 .我不明白“set_flag”到底在做什么,以及3、16和31如何被保存为“flags”,然后在“check_flag”中返回为1。