Diferencia entre revisiones de «Operador condicional»

Línea 1: Línea 1:
 
<div align="justify">{{Definición|Nombre=Operador condicional|imagen=  |concepto=Es el único operador ternario de la gramática [[C++]] y sirve para escribir expresiones condicionales}}
 
<div align="justify">{{Definición|Nombre=Operador condicional|imagen=  |concepto=Es el único operador ternario de la gramática [[C++]] y sirve para escribir expresiones condicionales}}
'''Operador condicional'''.Es el único operador ternario de la gramática [[C++]] y sirve para escribir expresiones condicionales. Su formato es el siguiente ``expresion1 ? expresion2 : expresion3'', expresion1 es evaluada primero, si es diferente de cero (verdadero) entonces se evalua expresion2 devolviéndose como resultado de la expresión condicional. Si expresion1 es igual a cero (falso) se evalua expresion3 y se devuelve como resultado de la expresión condicional.
+
'''Operador condicional'''. Es el único operador ternario de la gramática [[C++]] y sirve para escribir expresiones condicionales. Su formato es el siguiente ''expresion1 ? expresion2 : expresion3'', expresion1 es evaluada primero, si es diferente de cero (verdadero) entonces se evalua expresion2 devolviéndose como resultado de la expresión condicional. Si expresion1 es igual a cero (falso) se evalua expresion3 y se devuelve como resultado de la expresión condicional.
 
== Sintaxis ==
 
== Sintaxis ==
 
   expresion-relacional ? expr1 : expr2
 
   expresion-relacional ? expr1 : expr2
Línea 32: Línea 32:
 
*[[Operadores aritméticos|Operadores aritméticos]]
 
*[[Operadores aritméticos|Operadores aritméticos]]
 
*[[Operadores lógicos|Operadores lógicos]]
 
*[[Operadores lógicos|Operadores lógicos]]
*[[Operadores de manejo de bits|Operadores de manejo de bits]]  
+
*[[Operadores de manejo de bits|Operadores de manejo de bits]]
 +
*[[Operadores de asignación|Operadores de asignación]]
 +
 
== Fuente  ==
 
== Fuente  ==
 
* [http://www.zator.com/Cpp/E4_9_6.htm Operador Condicional]
 
* [http://www.zator.com/Cpp/E4_9_6.htm Operador Condicional]

Revisión del 14:52 22 jul 2011

Operador condicional
Información sobre la plantilla
Concepto:Es el único operador ternario de la gramática C++ y sirve para escribir expresiones condicionales

Operador condicional. Es el único operador ternario de la gramática C++ y sirve para escribir expresiones condicionales. Su formato es el siguiente expresion1 ? expresion2 : expresion3, expresion1 es evaluada primero, si es diferente de cero (verdadero) entonces se evalua expresion2 devolviéndose como resultado de la expresión condicional. Si expresion1 es igual a cero (falso) se evalua expresion3 y se devuelve como resultado de la expresión condicional.

Sintaxis

 expresion-relacional ? expr1 : expr2

Comentario

El operador condicional ? : produce un resultado. En la expresión E1 ? E2 : E3, E1 es una expresión relacional que se evalúa primero. Si el resultado es cierto, entonces se evalúa E2 y este es el resultado. En caso contrario (si E1 resulta falso), entonces se evalúa E3 y este es el resultado. Si la premisa E1 es cierta, entonces no llega a evaluarse la expresión E3.

Uso del operador condicional ? :

El operador ? : puede usarse para sustituir ciertas sentencias del tipo if-then-else, aunque puede conducir a expresiones más compactas que las correspondientes if...else. En el ejemplo que sigue, a (y) se le asigna el valor 100:

 x = 10;
 y = x > 9 ? 100 : 200;

No es necesario poner paréntesis en la primera expresión (E1), ya que la precedencia de ? : es muy baja (justamente sobre la asignación = ). De todos modos, es aconsejable ponerlos por legibilidad.

 y = (x > 9)? 100 : 200;

En caso de que E1 no sea una expresión relacional, debe ser un escalar reducible a un booleano (Conversión de tipos). Por ejemplo es válido:

 int y = 6 ? 7: 8;

Aunque en este caso el resultado sería siempre y == 7 (el int 6 se se traduce en el booleano true). En ocasiones se aprovechan los efectos laterales del operador para producir un resultado. Ejemplo:

 ++x ? ++y : --z;

Ejemplos

Suponiendo que z e y sean Lvalues, las siguientes expresiones son equivalentes:

 (x ? y : z) = 10;
 (x ? y = 10 : (z = 10));

El bucle que sigue imprime n elementos de una matriz, 10 por línea, con cada columna separada por un espacio y con cada línea terminada por un NL (nueva línea), incluida la última.

 for (i = 0; i < n; i++)
 printf ("%6d%c", a[i], (i%10==9 || i==n-1) ? '\n' : ' ');

Véase también

Fuente