循环操作
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);
这个怎么写?
由于您没有发布任何代码,我不会编写任何代码,但很乐意帮助您解决一些概念,您可以将这些概念转化为工作代码。
编写函数来执行单独的操作(加法、减法、乘法等)。
获取 function pointers 的数组,使用您要执行的各个函数对其进行初始化。
遍历数组并将所需的变量传递给函数调用以获得所需的输出。
类似于(伪代码)
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;
}
我想写这样的东西;
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);
这个怎么写?
由于您没有发布任何代码,我不会编写任何代码,但很乐意帮助您解决一些概念,您可以将这些概念转化为工作代码。
编写函数来执行单独的操作(加法、减法、乘法等)。
获取 function pointers 的数组,使用您要执行的各个函数对其进行初始化。
遍历数组并将所需的变量传递给函数调用以获得所需的输出。
类似于(伪代码)
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;
}