gpt4 book ai didi

c - 具有重叠操作的 Switch 中的多个案例

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:05 25 4
gpt4 key购买 nike

在C中有什么方法可以通过不同的case标签,每个标签做一个特定的操作,一些在公共(public)操作中,而不重写公共(public)操作?我的意思是:

switch(input)
{
case A:
//do nothing
break;
case B:
data = 0x02;
output = data;
break;
case C:
data = 0x04;
output = data;
break;
case D:
data = 0x08;
output = data;
break;
default:
//do nothing
break;
}

使用类似下面的内容,但 B、C 和 D 输入的输出不会停留在 0x08:

switch(input)
{
case A:
//do nothing
break;
case B:
data = 0x02; //specific operation for B
case C:
data = 0x04; //specific operation for C
case D:
data = 0x08; //specific operation for D
output = data; //common operation for all B,C,D labels
default:
//do nothing
break;
}

如果输入是 B、C 或 D,我需要随后分配给 0x02、0x04 或 0x08 的输出。有可能吗?谢谢!

最佳答案

没有明显需要重新安排原始代码,但肯定是可能的:

bool write_output = true;

switch(input)
{
case B: data = 0x02; break;
case C: data = 0x04; break;
case D: data = 0x08; break;

case A:
default:
write_output = false;
break;
}

if(write_output)
{
output = data;
}

关于c - 具有重叠操作的 Switch 中的多个案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42197934/

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