我是编码的新手,所以我很抱歉这是一个明显的答案。当我运行我的程序并设置第4位时,我得到16这是正确的。当我选择设置另一位时,例如1;它的返回2也是正确的,但是我希望通过组合用户的前一个条目来获得值18。我确定我过度思考它,但我无法弄清楚我的代码应该在哪里进行更改。谢谢你的帮助!
#include <stdio.h>
#include <stdlib.h>
int main()
{
int value,bit,i,n,option;
value = 0;
printf("The current value is %d\n\n", value);
while (1)
{
printf("\t(1) Set a bit\n");
printf("\t(2) Clear a bit\n");
printf("\t(3) Exit\n");
printf("Enter your choice : ");
scanf(" %d", &option);
switch(option)
{
case 1:
printf("Set which bit (0-31): ");
scanf(" %d", &n);
bit=0;
bit = bit | (1 << n);
printf("\nThe current value is %d\n\n", bit);
break;
case 2:
printf("Clear which bit (0-31): ");
scanf(" %d", &n);
bit=0;
bit = bit & (~(1<<n));
printf("\nThe current value is %d\n\n", bit);
break;
case 3:
if(option==3)
exit(0);
}
}
return 0;
}
答案 0 :(得分:1)
每次将位重置为0
bit=0; /////<<<====
bit = bit | (1 << n);
在开始时将位设置为0
int value,bit,i,n,option;
bit =0;
并删除开关中的bit = 0行