Duda tonta switch

Iniciado por Choke1, 30 Octubre 2014, 17:56 PM

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

Choke1

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

avesudra

#1
En pocas palabras, no.

Saludos.
Regístrate en

eferion

Cita de: avesudra en 30 Octubre 2014, 18:08 PM
En pocas palabras, no.

seguro??


Código (cpp) [Seleccionar]
switch(opcion){
                 
    case 'a':
    case 'A':
          printf("La suma de %g + %g = %g ",num1,num2,num1+num2);             
                 break;
                 
                 
    }

avesudra

#3
Cita de: eferion en 30 Octubre 2014, 18:12 PM
seguro??


Código (cpp) [Seleccionar]
switch(opcion){
               
   case 'a':
   case 'A':
         printf("La suma de %g + %g = %g ",num1,num2,num1+num2);            
                break;
               
               
   }

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.
Regístrate en

eferion

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.

Choke1

Gracias eferion eso era lo que buscaba.

El Benjo

Si todavía necesitas hacerlo de la forma " 'A' || 'a' " entonces puedes utilizar un else if para hacerlo.

Saludos.
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

eferion

Cita de: 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.

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

Cita de: eferion en 30 Octubre 2014, 18:12 PM
Código (cpp) [Seleccionar]
switch(opcion){
                 
    case 'a':
    case 'A':
          printf("La suma de %g + %g = %g ",num1,num2,num1+num2);             
                 break;
                 
                 
    }


El Benjo

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'.
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.