循环操作

Looping operations

我想写这样的东西;

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);

这个怎么写?

由于您没有发布任何代码,我不会编写任何代码,但很乐意帮助您解决一些概念,您可以将这些概念转化为工作代码。

  1. 编写函数来执行单独的操作(加法、减法、乘法等)。

  2. 获取 function pointers 的数组,使用您要执行的各个函数对其进行初始化。

  3. 遍历数组并将所需的变量传递给函数调用以获得所需的输出。

类似于(伪代码

funcptr arr[SIZE] = { func1, func2, func3... };

for (int i = 0; i < SIZE ; i++) {
    printf("%d\n", arr[i](a, b));
}

也就是说,请注意,a ^ b 而不是 C 中的 "exponent" 运算符,因为你可能已经预料到了。它是按位异或。您可以使用 pow() 来完成它。

仅供参考,相关信息可参考this question

函数指针数组即可。

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;
}