Почему мы не можем использовать ключевое слово 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;