Тернарные операторы и Возrotation в C

Почему мы не можем использовать ключевое слово return внутри тернарных операторов в C, например: sum> 0? return 1: return 0;

return – это утверждение. Таким образом, выражения не могут использоваться внутри выражений.

Потому что тройная операция является выражением, и вы не можете использовать утверждения в выражениях.

Однако вы можете легко использовать тройной оператор в возврате.

 return sum > 0 ? 1 : 0; 

Или, как отметил DrDipShit:

 return sum > 0; 

Тернарный оператор имеет дело с выражениями, но return – это утверждение.

Синтаксис оператора return

return expr ;

Синтаксис тернарного условного оператора

expr1 ? expr2 : expr3

Таким образом, вы можете подключить вызов тернарного оператора как выражение в операторе return . Но вы не можете подключить оператор return как expr2 или expr3 тройного оператора.

Тройное выражение действует как оператор if , но не является точной заменой оператора if . Если вы хотите написать

 if(sum > 0) return 1; else return 0; 

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

Потому что return – это выражение, а не выражение. Вы не можете сделать int a = return 1; или.

См. Синтаксис тернарного оператора:

 expr1 ? expr2: expr3; 

где expr1 , expr2 , expr3 – выражения;

Оператор ?: Работает следующим образом. expr1 сначала оценивается, если он истинен. expr2 оценивается иначе, иначе вычисляется expr3 .

поэтому в выражениях оператор возврата не может использоваться на языке C.

Оператор return используется для возврата из function , вы не можете использовать внутри тернарного оператора.

  (1==1)? return 1 : return 0; /* can't use return inside ternary operator */ 

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

 return (1==1) ? 1 : 0; 

Синтаксис тройного оператора следует за

 expr1 ? expr2 : expr3; 

где expr1 , expr2 , expr3 – выражения, а return – выражение, а не выражение.

Просто взглянув на синтаксис, вы должны знать, что оператор не может использоваться в выражении. То, что вы хотите, может быть достигнуто путем выполнения: return sum > 0 ? 1 : 0; return sum > 0 ? 1 : 0;