Оператор двоеточия в C / Stack Overflow

Я пытаюсь реализовать декодер для кодека, и, читая технический документ, я наткнулся на это

Variable > 96000 ? 4 : 2;

что означает вопросительный знак ? и толстая кишка : между этими двумя числами делать?

Я никогда не видел этого раньше (хотя я нуб), и Google не очень помогает.

-2

Решение

Это троичный оператор, он работает как если бы еще условие.

Variable > 96000 ? 4 : 2;

В этой строке, если Variable > 96000 верно, что вернется 4 иначе он вернется 2

Традиционная конструкция if-else в C

if (a > b) {
result = x;
} else {
result = y;
}

Это может быть переписано как следующее утверждение:

result = a > b ? x : y;
2

Другие решения

?: является условным оператором в C.

http://en.wikipedia.org/wiki/%3F%3A

http://www.eskimo.com/~scs/cclass/int/sx4eb.html

1

return ( Variable > 96000 ) ? 4 : 2;

переводит на

if(Variable > 96000){

return 4;
}else {
return 2;
}

вы, вероятно, пропускаете возврат в начале вашего заявления.

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;
}
0

Его троичный оператор, который эквивалентен условию If else в C / C ++.

Рекомендуется использовать круглые скобки при использовании этого оператора, чтобы избежать побочных эффектов от проблем приоритета операторов, как указано в Неожиданный результат, троичный оператор в Gnu C

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector