TODOPIC

Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: migsantiago en 25 de Enero de 2010, 18:40:37

Título: Sintaxis ? en lenguaje C
Publicado por: migsantiago en 25 de Enero de 2010, 18:40:37
Hola

Estoy estudiando un código y me encuentro con una sintaxis que recuerdo que ya entendía pero ya se me olvidó...

Código: [Seleccionar]
for (i=0; i<8; i++)
tmpdata[0] |= results[i+16] ? (0x80>>i) : 0;

for (i=0; i<8; i++)
tmpdata[1] |= results[i+24] ? (0x80>>i) : 0;

Sólo sé que el equivalente es éste para la primer línea rara:

Código: [Seleccionar]
tmpdata[0] = tmpdata[0] | results[i+16] ? (0x80>>i) : 0;
Pero ya cuando entra el ? me quedo de a  :huh: :?: :z)

¿Qué es lo que hace ese signo?

Edito: tmpdata y results son enteros de 8 bits.
Título: Re: Sintaxis ? en lenguaje C
Publicado por: Nocturno en 25 de Enero de 2010, 19:02:51
Esto
tmpdata[1] |= results[i+24] ? (0x80>>i) : 0;

es equivalente a esto

if results[i+24]
    tmpdata[1] |=(0x80>>i)
  else
    tmpdata[1] |=0;
Título: Re: Sintaxis ? en lenguaje C
Publicado por: migsantiago en 25 de Enero de 2010, 19:20:07
OOhhh, muchas gracias Manolo.  :mrgreen:
Título: Re: Sintaxis ? en lenguaje C
Publicado por: RICHI777 en 26 de Enero de 2010, 10:01:53
Hola, Mig se llama operador ternario y es muy útil en algunos casos.

Saludos !
Título: Re: Sintaxis ? en lenguaje C
Publicado por: migsantiago en 26 de Enero de 2010, 10:34:09
Hola Richi

¿Ternario? Pero sólo tiene 2 opciones, ¿no sería mejor binario?
Título: Re: Sintaxis ? en lenguaje C
Publicado por: RICHI777 en 26 de Enero de 2010, 10:44:01
Hola, se le dice asi por Condicion, ejecucion por verdadero y ejecucion por falso.

Saludos !
Título: Re: Sintaxis ? en lenguaje C
Publicado por: MGLSOFT en 26 de Enero de 2010, 10:54:24
Otro ejemplo aqui:

Código: C
  1. //Macro identifier requires parameters
  2. //A #DEFINE identifier is being used but no parameters were specified, as required. For example:
  3. #define min(x,y) ((x<y)?x:y)
  4. //When called MIN must have a (--,--) after it such as:
  5. r=min(value, 6);

No hay mucha documentacion del tema... :? :?
Título: Re: Sintaxis ? en lenguaje C
Publicado por: RICHI777 en 26 de Enero de 2010, 11:04:40
Hola, aca un link mas descriptivo

http://latecladeescape.com/w0/basico/el-operador-ternario.html

Por lo que tengo entendido, ya este tipo de operadores existia en otros lenguajes, la inclusión en C fue para permitir escribir menos "cosas" recordar que el C fue desarrollado en primeros años de los 70, y no existian los poderosos editores de ahora.

Saludos !
Título: Re: Sintaxis ? en lenguaje C
Publicado por: MGLSOFT en 26 de Enero de 2010, 11:13:44
Buena informacion Richi!!