如何使用C

时间:2017-02-07 16:42:56

标签: c switch-statement bit-manipulation

我是编码的新手,所以我很抱歉这是一个明显的答案。当我运行我的程序并设置第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;
}

1 个答案:

答案 0 :(得分:1)

每次将位重置为0

  bit=0; /////<<<====
    bit = bit | (1 << n);

在开始时将位设置为0

int value,bit,i,n,option;
bit =0;

并删除开关中的bit = 0行