C / C ++中的冒号运算符

时间:2014-11-28 04:46:14

标签: c++ c codec

我正在尝试为编解码器实现解码器,在阅读白皮书时我偶然发现了这个

Variable > 96000 ? 4 : 2;

这两个数字之间的问号?和冒号:是做什么的?

我之前从未见过这个(虽然我是菜鸟),谷歌并没有多大帮助。

5 个答案:

答案 0 :(得分:2)

这是三元运算符,这就像if else条件一样。

Variable > 96000 ? 4 : 2;

如果Variable > 96000为真,则在此行中返回4否则它将返回2

C

中的传统if-else结构
if (a > b) {
    result = x;
} else {
    result = y;
}

这可以改写为以下声明:

result = a > b ? x : y;

答案 1 :(得分:1)

答案 2 :(得分:0)

return ( Variable > 96000 ) ? 4 : 2; 

转换为

if(Variable > 96000){

    return 4;
}else {
    return 2;
}

你可能错过了陈述前面的回报。

答案 3 :(得分:0)

这基本上是C中的等价语句,下面的例子将详细说明它的用法。 在下面的示例中,将比较两个数字,并返回较大的数字。

#include <stdio.h>

static int get_larger(int a, int b)
{
return (a > b) ? a : b; // if a is greater than b, return a, else return b
}

int main ()
{
  int a = 100;
  int b = 101;
  printf("Larger Number = %d\n", get_larger(a,b));
  return 0;
}

答案 4 :(得分:0)

它的三元运算符相当于C / C ++中的If else条件。

注意:

建议在使用此运算符时使用括号,以避免Unexpected Result, Ternary Operator in Gnu C中提到的运算符优先级问题的副作用