c - 在 C 中“动态”使用变量?

标签 c function replace

你好, 假设我有以下功能:

#define SIZE 100
double a[SIZE];
double b[SIZE];

double a_function(int index1, int index2)
{
    switch(index1)
    {
        case 1:
            return a[1]*a[2]*a[5]*a[3];
        case 2:
            return a[6]*cos(a[77])*exp(a[95]);
        // .............. MUCH MORE CASES 
        // ALWAYS USING ONLY VALUES OF ARRAY a
        case 100:
            return exp(a[20])*sin(a[21]);
    }
}

我想实现以下目标:index2 介于 0 和 SIZE-1 之间,而且我想“替换”每个 a[index2] 通过在每种情况下使用 b[ index2 ] 而无需更改 switch/case-construct。此外,a和b不能被修改,所以它们是只读的!

关于此的简短示例:
a_function(2, index2) for index2 != {6, 77, 95} -> 返回 a[6]*cos(a[77])*exp(a[95]) ;

a_function(2, 6) -> 返回 b[6]*cos(a[77])*exp(a[95]);

知道如何做到这一点吗? 也许有一些帮助功能或使用"template"? 非常感谢!

最佳答案

我认为你必须制作一个宏来执行此操作

#define X(n) ((index2==n)?(b[n]):(a[n]))

double a_function(int index1, int index2)
{
   switch(index1)
    {
        case 1:
            return X(1)*X(2)*X(5)*X(3);
        case 2:
            return X(6)*cos(X(77))*exp(X(95));
        ...
        case 100:
           return exp(X(20))*sin(X(21));
   }

关于c - 在 C 中“动态”使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5997933/

相关文章:

c - 比较两个日期时间戳的算法

c - c语言中如何比较字符串

java - 如何只返回一个公共(public)值?

SQLite:REPLACE INTO如何确定行是否存在?

objective-c - 寻找合适的词汇数据库来构建C结构

c - 使用 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP 和 -Wextra 时如何避免编译器警告

javascript - 我怎样才能让我的功能按计划运行?我的逻辑有错吗? (长的)

objective-c - 从 C 函数调用 Objective-C 对象方法

python - replace() 方法不适用于 Pandas DataFrame

javascript - 删除第一个数字,然后是 ";",然后删除其余的 ";",但保留后面的数字