我正在尝试为编解码器实现解码器,在阅读白皮书时我偶然发现了这个
Variable > 96000 ? 4 : 2;
这两个数字之间的问号?
和冒号:
是做什么的?
我之前从未见过这个(虽然我是菜鸟),谷歌并没有多大帮助。
答案 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中提到的运算符优先级问题的副作用