Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: OlgaFuentes en 6 Octubre 2022, 16:44 pm



Título: Operador lógico OR
Publicado por: OlgaFuentes en 6 Octubre 2022, 16:44 pm
¡Hola!

Estaba desarrollando un programa en el que, introducido un número, indique si termina en 2 o 3.

Por lo tanto, escribí algo tal que así:

Código
  1. int n;
  2.  
  3. printf("Introduzca un número entre 1 y 99: ");
  4. scanf("%d", &n);
  5.  
  6. if((n%10)==(2||3)){
  7. printf("El número termina en 2 o 3");
  8. }
  9. else){
  10. printf("El número no termina en 2 o 3");
  11. }

Sin embargo, no funciona bien. Detecta únicamente que los números terminados en 1 cumplen la condición if((n%10)==(2||3)), lo cual es falso. Entiendo que el error está ahí, pero ¿cuál es?

MOD: El código debe ir entre etiquetas de Código GeSHi


Título: Re: Operador lógico OR
Publicado por: Lieutenant McFarley en 6 Octubre 2022, 18:24 pm
Cuando escribes:

if((n%10)==(2||3))

el resultado de (2||3) = 1

por lo tanto es como si escribieras:

if((n%10)==1

y por tanto solo se verifica cuando (n%10)==1

con lo cual solo se verifica para nºs terminados en 1.

Para que compruebe si terminan en 2 o en 3 (cualquiera de ellos indistintamente) debería ser:

if( (n%10==2) || (n%10==3) )

  {
     ...
  }