c语言如何实现 形参为int类型 传入 1 时执行函数1 ,传入 2 时执行函数2 ,传入 4时执行函数4, 传入 8 时执行函数8, 传入 3 时执行函数1和2,传入 15 时执行函数1 2 3 4 ,传入 0 时不执行任何函数 ? 并可以继续扩展
时间: 2024-02-06 10:09:03 浏览: 65
可以使用位运算来实现这个功能。将每个函数与一个唯一的二进制位对应,例如:
函数1:0001
函数2:0010
函数3:0100
函数4:1000
那么传入参数为n时,就可以通过位运算来判断需要执行哪些函数。具体实现如下:
```c
void func1() {
printf("执行函数1\n");
}
void func2() {
printf("执行函数2\n");
}
void func3() {
printf("执行函数3\n");
}
void func4() {
printf("执行函数4\n");
}
void execute_functions(int n) {
if (n & 0x01) {
func1();
}
if (n & 0x02) {
func2();
}
if (n & 0x04) {
func3();
}
if (n & 0x08) {
func4();
}
}
int main() {
execute_functions(1); // 执行函数1
execute_functions(2); // 执行函数2
execute_functions(4); // 执行函数3
execute_functions(8); // 执行函数4
execute_functions(3); // 执行函数1和2
execute_functions(15); // 执行全部函数
execute_functions(0); // 不执行任何函数
return 0;
}
```
如果需要扩展,只需要为每个新函数分配一个新的二进制位,并在execute_functions函数中增加相应的位运算即可。
阅读全文