Я пытаюсь реализовать декодер для кодека, и, читая технический документ, я наткнулся на это
Variable > 96000 ? 4 : 2;
что означает вопросительный знак ?
и толстая кишка :
между этими двумя числами делать?
Я никогда не видел этого раньше (хотя я нуб), и Google не очень помогает.
Это троичный оператор, он работает как если бы еще условие.
Variable > 96000 ? 4 : 2;
В этой строке, если Variable > 96000
верно, что вернется 4
иначе он вернется 2
Традиционная конструкция if-else в C
if (a > b) {
result = x;
} else {
result = y;
}
Это может быть переписано как следующее утверждение:
result = a > b ? x : y;
?:
является условным оператором в C.
return ( Variable > 96000 ) ? 4 : 2;
переводит на
if(Variable > 96000){
return 4;
}else {
return 2;
}
вы, вероятно, пропускаете возврат в начале вашего заявления.
Это в основном утверждение эквивалентности в 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;
}
Его троичный оператор, который эквивалентен условию If else в C / C ++.
Рекомендуется использовать круглые скобки при использовании этого оператора, чтобы избежать побочных эффектов от проблем приоритета операторов, как указано в Неожиданный результат, троичный оператор в Gnu C