2010-08-25 17 views
13

¿Por qué no podemos usar la palabra clave return dentro de operadores ternarios en C, como esta: sum> 0? return 1: return 0;Operadores ternarios y retorno en C

+17

¿Qué pasa con 'return sum> 0? 1: 0; '? –

+2

O, para el caso, 'if (sum> 0) return 1; else return 0; ' –

+1

Gracias por todas las respuestas. No hay nada de malo con return sum> 0? 1: 0; Solo quiero saber por qué no podemos usarlo de la manera mencionada anteriormente en la pregunta. – nullpointerexception

Respuesta

26

return es una afirmación. Las declaraciones no se pueden usar dentro de expresiones de esa manera.

25

Porque una operación ternaria es una expresión y no puede usar declaraciones en las expresiones.

Sin embargo, puede utilizar fácilmente un operador ternario en una devolución.

return sum > 0 ? 1 : 0; 

O como DrDipShit señaló:

return sum > 0; 
+8

de just: return sum> 0; que funciona como regresar 1 o 0 de todos modos. –

+0

@DrDipShit: muy cierto, en este caso, que funciona igual de bien :) – Wolph

9

Debido return es una afirmación, no una expresión. Tampoco puedes hacer int a = return 1;.

2

Consulte la sintaxis de un operador ternario es

expr1 ? expr2: expr3; 

donde expr1, expr2, expr3 son expresiones;

El operador ?: funciona de la siguiente expr1 se evalúa primero si bien es cierto expr2 se evalúa lo contrario se evalúa expr3.

por lo tanto, en expresiones la declaración de return no se puede utilizar en lenguaje C.

+1

-1, realmente no responde la pregunta. también SO no está diseñado para atraer tráfico a su sitio web – Hasturkun

0

Con solo mirar la sintaxis, debe saber que una declaración no se puede usar en una expresión. Lo que desea se puede lograr haciendo: return sum > 0 ? 1 : 0;