代码之家  ›  专栏  ›  技术社区  ›  Galaxy

如何在C++运行时生成布尔条件?

  •  0
  • Galaxy  · 技术社区  · 5 年前

    if () else if () 这是 伪码

    void fun(int num, int offset = 0) {
        if (0...60) {
             // do something
        } else if (60...180) {
            // do something else
        } else if (180...240) {
        } else if (240...360) {
        }
    }
    

    第一个if语句的工作方式如下:

    if (0 >= num && num <= 20) {
        // do something
    }
    

    这里的警告是除了 int num ,传入了另一个参数,我将其称为 offset . 这里的代码结构,包括 do something { } 是一样的。唯一需要更改的是基于偏移值的范围。顺便说一下,这是 这里的一个默认参数,它只是一个伪代码,演示 int offset 被传了进来。

    void fun(int num, int offset = 120) {
        if (120...180) {
             // do something
        } else if (180...300) {
            // do something else
        } else if (300...360) {
        } else if (360...120) {
        }
    }
    

    最后一个 else if ()

    } else if (360...120) {
    }
    

    } else if (num >= 360 || num <= 120) {
    }
    

    原因是我的 整数 0...120 .

    这是一个数学应用。只要你有 整数

    我不想写额外的函数。我希望我的代码是通用的,因为 整数 内部偏移量 内部偏移量

    这里的主要问题是在第一种情况下 int offset = 0

    } else if (240 >= num && num <= 360) {
    }
    

    但是,对于不同的偏移量,我们需要改变 整个情况 int offset = 120 ,如上图所示:

    }124360(如果{
    

    && 最后 否则如果() ,但现在我有了 || 操作员 只是有条件的内部陈述 char string ,然后将完成的条件“粘贴”到 if () 声明 在运行期间 !

    更糟糕的是,这种“环绕”可以发生在任何一个 如果() 陈述,而不仅仅是最后一个。它基于 抵消 .

    我不能使用预处理器技巧,因为我想让它在运行时工作。也许可以使用函数指针之类的,但我不知道怎么做。请注意 ... 上面是 真实的 C++代码 ,是的 ! 我知道C++中有一个“基于范围的”转换语句,但是我不能使用它,因为上面提到的“环绕”属性。

    0 回复  |  直到 5 年前