【问题标题】:Using multiple instructions inside ternary operator in C在C中的三元运算符中使用多条指令
【发布时间】:2022-09-30 19:16:20
【问题描述】:

我是学习 C 的新手,我想知道是否可以在 C 中的三元运算符中启动超过 1 条指令 - 例如:

int a = 5;
int b = 7;
int max;
int min;
max = (a>b) ? a, b = min :  b, a = min;   
pritnf(\"%d %d\", min, max);

我想对这些数字进行排序并将它们分配给变量最大值或最小值。 是否可以告诉程序如果 a > b 它会将 a 保存为最大值并将 b 分配给最小值?还是我必须使用 If 函数来做? 我认为问题在于使用逗号,但我不知道应该改用什么。 我得到的信息是这样的:

警告:逗号运算符的左操作数无效 [-Wunused-value] 整数最大值 = (a>b) ? (a, b = min) : (b, a = min);

  • \"Instruction\" 是在这里使用的一个非常重要的术语,并不意味着您认为它在这种情况下的含义。它通常被解释为“机器指令”,与 C 代码及其各种陈述表达式.顾名思义,三元运算符是包含三个子表达式的表达式。每个表达式可以包含更多的子表达式,对嵌套没有特定限制。
  • 提示:您认为该表达式如何根据operator precedence rules 进行解析?请注意, 在该列表中是如何排在最后的。

标签: c conditional-operator


【解决方案1】:

由于运算符优先级,您必须使用括号:

int a = 5;
int b = 7;
int max;
int min;
max = (a > b) ? (min = b, a) : (min = a, b);
pritnf("%d %d", min, max);

【讨论】:

    猜你喜欢
    • 2020-12-29
    • 2010-10-20
    • 1970-01-01
    • 2013-10-01
    • 2020-11-23
    • 2011-06-26
    • 2016-06-28
    • 2013-06-06
    • 2012-09-14
    相关资源
    最近更新 更多