gpt4 book ai didi

c - 如何在 C 中使用 switch 语句保留被操作位的值

转载 作者:行者123 更新时间:2023-11-30 19:09:59 25 4
gpt4 key购买 nike

我是编码新手,所以如果这是一个显而易见的答案,我深表歉意。当运行我的程序并设置位 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

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

而是在开始时将位设置为 0

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

并删除开关中的 bit=0 行

关于c - 如何在 C 中使用 switch 语句保留被操作位的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42095370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com