elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Son estos operadores ternarios iguales?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Son estos operadores ternarios iguales?  (Leído 454 veces)
Protean

Desconectado Desconectado

Mensajes: 1


Ver Perfil
¿Son estos operadores ternarios iguales?
« en: 12 Mayo 2025, 05:23 am »

Hola, ¿cuáles son las diferencias entre estos?

Código:
  #include <iostream>

int main()
{
    int a = 18, b = 44, total = 0, total2 = 0;

    total += (a % 2 == 0) ? b : 0; //44

    total2 += a % 2 ? b : 0; //0
    a >>= 1;
    b <<= 1;

    printf("%d\n%d", total, total2);

}


En línea

AlexJRGWesker

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Re: ¿Son estos operadores ternarios iguales?
« Respuesta #1 en: 12 Mayo 2025, 06:12 am »

En el caso de la primera variable total estás parametrizando bien, estás indicando una expresión booleana y si se cumple (te da true ya que 18%2 == 0 es cierto), entonces te sale de forma correcta que total = b.

En el caso de la variable total2, no has parametrizado y no da un valor booleano, al final depende de la propia implementación de C en este caso que hace que 18%2 = 0 pero en este caso 0 sería un valor entero no booleano, por lo que lo correcto sería, teniendo en cuenta como esta implementado el lenguaje C, que parametrizarás de forma correcta el valor total2 como en el caso de total, o hacer un casting (bool)(a%2) ? b : 0 . Así haciendo el casting, ya no sale un número entero si no que sale un booleano teniendo en cuenta como está implementado el lenguaje C.

Además también tienes errores en la asignación de a y b, ya que el operador "<<" o ">>" con el igual detrás = es incorrecta, lo cual te sirve para adelantar o retrasar un bit. Mirate eso también.

Al final la solución al problema que tienes lo puedes solucionar haciendo un casting dado como está implementado C y nos cuentas (para que así el 0 resultante sea un booleano y no un entero).

Saludos!  :rolleyes:


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Rnd iguales
Programación Visual Basic
monro 3 2,824 Último mensaje 7 Abril 2010, 21:23 pm
por monro
IPs iguales
Dudas Generales
the_lokadio 9 6,080 Último mensaje 24 Junio 2010, 13:25 pm
por the_lokadio
Error con Operadores ternarios ?
Programación C/C++
Onigiri 9 4,348 Último mensaje 27 Abril 2013, 14:28 pm
por Luz Violeta
Estos son los principales fallos de los operadores que pueden aumentar la ...
Noticias
wolfbcn 0 1,865 Último mensaje 2 Febrero 2018, 02:16 am
por wolfbcn
Estos son los operadores que reciben más reclamaciones
Noticias
wolfbcn 3 1,715 Último mensaje 21 Junio 2019, 13:26 pm
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines