【问题标题】:Pass ternary operator to parameter of a function将三元运算符传递给函数的参数
【发布时间】:2020-04-11 23:08:15
【问题描述】:

我可以将三元运算符传递给函数的参数吗?

int test(int a, int b, int c) {
    return a+b+c;
}

int nn = 0;
int a = test(1, 1 | (2 ? nn : 0), 1); // test(1, 1 | 0, 1)

n = 1;
a = test(1, 1 | (2 ? nn : 0), 1); // test(1, 1 | 2, 1)

【问题讨论】:

  • 你在尝试这个时遇到了什么问题?
  • warning: enum constant in boolean context [-Wint-in-bool-context]
  • 你检查过每一件作品,还是草草下结论? (测试每个部分的示例是将复杂表达式移出函数的参数列表。例如,您可以尝试int parameter = 1 | (2 ? nn : 0); int a = test(1, parameter, 1);。) 得出结论往往会适得其反。

标签: c++ arguments conditional-operator function-call


【解决方案1】:

您没有传递三元运算符。您正在使用三元运算符传递表达式的评估值。

您可以使用任何表达式作为参数,该表达式生成的值的类型与相应参数的类型不矛盾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多