Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Choke1 en 30 Octubre 2014, 17:56 pm



Título: Duda tonta switch
Publicado por: Choke1 en 30 Octubre 2014, 17:56 pm
En un switch hay alguna forma de poder hacer esto:

switch(opcion){
                 
    case ('a' || 'A') :
          printf("La suma de %g + %g = %g ",num1,num2,num1+num2);             
                 break;
                 
                 
    }

gracias


Título: Re: Duda tonta switch
Publicado por: avesudra en 30 Octubre 2014, 18:08 pm
En pocas palabras, no.

Saludos.


Título: Re: Duda tonta switch
Publicado por: eferion en 30 Octubre 2014, 18:12 pm
En pocas palabras, no.

seguro??


Código
  1. switch(opcion){
  2.  
  3.    case 'a':
  4.    case 'A':
  5.          printf("La suma de %g + %g = %g ",num1,num2,num1+num2);            
  6.                 break;
  7.  
  8.  
  9.    }


Título: Re: Duda tonta switch
Publicado por: avesudra en 30 Octubre 2014, 18:20 pm
seguro??


Código
  1. switch(opcion){
  2.  
  3.    case 'a':
  4.    case 'A':
  5.          printf("La suma de %g + %g = %g ",num1,num2,num1+num2);            
  6.                 break;
  7.  
  8.  
  9.    }
Es cierto que en el caso del operador de disyunción puedes hacer ese amaño para solucionarlo. Aun así con el operador lógico conjuntivo no te funciona y habría que usar otras maneras. Lo que debe quedar bien claro aquí es que detras del case no puede haber ninguna expresión que contega variables a ser evaluadas lógicamente, solo un valor constante.

Muy inteligente eferion  ;-)

Un cordial saludo.


Título: Re: Duda tonta switch
Publicado por: eferion en 30 Octubre 2014, 23:40 pm
Perdón si la respuesta daba a entender que me pasaba de listo... tenía poco tiempo y fue una respuesta rápida.

Ahora matizo. A mí la pregunta me ha dado a entender que el lo que pretendía era ejecutar el mismo código en el switch para dos condiciones diferentes... el, claro está, lo intentaba usando el operador ||, cuando realmente en un switch lo más acertado es poner varios case seguidos sin un break de por medio.

Obviamente un switch es bastante restrictivo. Sus case no admiten el uso de operadores ni de tipos que no sean los básicos.

Un saludo.


Título: Re: Duda tonta switch
Publicado por: Choke1 en 3 Noviembre 2014, 16:20 pm
Gracias eferion eso era lo que buscaba.


Título: Re: Duda tonta switch
Publicado por: El Benjo en 3 Noviembre 2014, 19:51 pm
Si todavía necesitas hacerlo de la forma " 'A' || 'a' " entonces puedes utilizar un else if para hacerlo.

Saludos.


Título: Re: Duda tonta switch
Publicado por: eferion en 4 Noviembre 2014, 08:37 am
Si todavía necesitas hacerlo de la forma " 'A' || 'a' " entonces puedes utilizar un else if para hacerlo.

No has leído las respuestas anteriores, ¿verdad?

Código
  1. switch(opcion){
  2.  
  3.    case 'a':
  4.    case 'A':
  5.          printf("La suma de %g + %g = %g ",num1,num2,num1+num2);            
  6.                 break;
  7.  
  8.  
  9.    }


Título: Re: Duda tonta switch
Publicado por: El Benjo en 4 Noviembre 2014, 19:54 pm
Perdón, no me expliqué bien. Lo que quise decir fue que si todavía necesitaba que se evaluara una expresión en vez de utilizar una constante entonces debía utilizar un 'else if'.