Autor Tema: Sintaxis ? en lenguaje C  (Leído 5247 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Sintaxis ? en lenguaje C
« 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.
« Última modificación: 25 de Enero de 2010, 18:44:25 por migsantiago »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Sintaxis ? en lenguaje C
« Respuesta #1 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;

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Sintaxis ? en lenguaje C
« Respuesta #2 en: 25 de Enero de 2010, 19:20:07 »
OOhhh, muchas gracias Manolo.  :mrgreen:

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Sintaxis ? en lenguaje C
« Respuesta #3 en: 26 de Enero de 2010, 10:01:53 »
Hola, Mig se llama operador ternario y es muy útil en algunos casos.

Saludos !

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Sintaxis ? en lenguaje C
« Respuesta #4 en: 26 de Enero de 2010, 10:34:09 »
Hola Richi

¿Ternario? Pero sólo tiene 2 opciones, ¿no sería mejor binario?

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Sintaxis ? en lenguaje C
« Respuesta #5 en: 26 de Enero de 2010, 10:44:01 »
Hola, se le dice asi por Condicion, ejecucion por verdadero y ejecucion por falso.

Saludos !

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Sintaxis ? en lenguaje C
« Respuesta #6 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... :? :?
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Sintaxis ? en lenguaje C
« Respuesta #7 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 !

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Sintaxis ? en lenguaje C
« Respuesta #8 en: 26 de Enero de 2010, 11:13:44 »
Buena informacion Richi!!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything