我想写这样的东西;
for (op1 in (plus, minus, times, divby, exponent)) {
printf("%d", a op1 b);
}
所以实际上最终被执行的是这样的
printf("%d", a + b);
printf("%d", a - b);
printf("%d", a * b);
printf("%d", a / b);
printf("%d", a ^ b);
我怎么写这个?
答案 0 :(得分:4)
由于您没有发布任何代码,我不会写任何代码,但很乐意帮助您处理一些可以转化为工作代码的概念。
编写函数以执行单独的操作(加法,减法,乘法等)。
取一个function pointers数组,用你想要执行的各个函数初始化它。
循环遍历数组并将所需的变量传递给函数调用以获得所需的输出。
类似(伪代码)
funcptr arr[SIZE] = { func1, func2, func3... };
for (int i = 0; i < SIZE ; i++) {
printf("%d\n", arr[i](a, b));
}
那就是说,只是一个注释,a ^ b
不一个&#34; exponent&#34; 运算符在C中,正如您所料。它是按位异或。您可以使用pow()
来完成这项工作。
仅供参考,您可以参考this question获取相关信息。
答案 1 :(得分:3)
函数指针数组可以。
double plus(int a, int b);
double minus(int a, int b);
double times(int a, int b);
double divby(int a, int b);
double exponent(int a, int b);
typedef double (*p_fun)(int a, int b);
int main()
{
int a = 5, b = 10;
p_fun pa[] = {plus, minus, times, divby, exponent};
for( int i = 0; i < sizeof(pa)/sizeof(p_fun); i++ )
{
printf("%f\n", pa[i](a, b));
}
return 0;
}