2012-01-08 4 views
0

я знаю, что если может быть прописан в короткий синтаксис пути в с пожалуйста, покажите мне, какIF короткий синтаксис с

if arraeck(a, n) ? printf("YES") printf("NO"); 

некоторые вещи, как это? .. в одной строке ... Что такое правильный синтаксис ?

+1

Вы имеете в виду оператора '?:'? Его синтаксис - _condition_? _expression_if_true_: _expression_if_false_. –

ответ

12

Прямая трансляция примере кода:

arraeck(a, n) ? printf("YES") : printf("NO"); 

Или еще короче:

printf(arraeck(a, n) ? "YES" : "NO"); 

Это называется (ternary) conditional operator ?:, и это не всегда лучшее решение, чтобы использовать его, как это может быть трудно читать. Обычно вы используете его только в том случае, если вам нужен результат условного выражения, например, во втором примере кода (оператор вычисляет "YES" или "NO" здесь).

В первом примере, оператор не используется в качестве выражения, так что вы должны лучше использовать явное if (это не так долго после того, как все):

if (arraeck(a, n)) 
    printf("YES"); 
else 
    printf("NO"); 
5

?: не эквивалентна до if: последнее является утверждением, но первое является выражением.

Вы можете сделать:

arraeck(a, n) ? printf("YES") : printf("NO"); 

но это плохой стиль.

Вы также можете сделать

str = arraeck(a, n) ? "YES" : "NO"; 
printf(arraeck(a, n) ? "YES" : "NO"); 

, но вы не можете писать

str = if (arraeck(a, n)) "YES"; else "NO"; 
printf(if (arraeck(a, n)) "YES"; else "NO"); 
2
if (cond) { 
    exp1; 
} else { 
    exp2; 
} 

Можно записать как

cond ? exp1 : exp2; 

Эта форма обычно используется для условного присваивания как это (от Wikipedia entry of ?:):

variable = condition ? value_if_true : value_if_false 
Смежные вопросы