Problema con typedef enum y un Switch

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
lbaltar
Mensajes: 4
Registrado: 08/09/2016 12:40 pm

Problema con typedef enum y un Switch

#1 Mensaje por lbaltar » 17/09/2016 2:10 pm

Hola, estoy intentando hacer un switch en base a un typedef enum de cierta cantidad de "opciones" que vendrian a ser los case del switch, pero no entiendo si tengo que definir una nueva variable o como hacer para llamar en el switch a estas opciones.El resto de las funciones que no incluyo en el codigo es porque esta funcionando, el problema es solamente con el switch y el typedef Abajo les dejo el codigo del typedef enum y del swtich:

#include<ctype.h>

typedef enum{Suma=1,Resta=2,Division=3,Multiplicar=4,Potencial=5,Factorial=6,NumeroCombinatorio=7,NumeroAleatorio=8} operaciones;

operaciones opcion = ????; /* ESTA ES LA PARTE CON EL PROBLEMA QUE NO SE COMO SOLUCIONAR */
switch(opcion)
case Suma: /*lo que esta en cada case esta funcionando pero no logro llamarlos desde el swtich */

Avatar de Usuario
daltomi
Mensajes: 354
Registrado: 28/04/2007 7:29 pm
Ubicación: Argentina

Re: Problema con typedef enum y un Switch

#2 Mensaje por daltomi » 18/09/2016 4:23 am

Buenas.

Sólo indica el valor de 'opcion' con el nombre de la constante que quieras, por ejemplo,

Código: Seleccionar todo

operaciones opcion = Suma;
No es necesario indicar todos los valores para cada nombre de la enumeración.
Por defecto el primer nombre inicia en 0 a menos que se indique lo contrario.

Código: Seleccionar todo

enum [cero, uno, dos];
enum [uno = 1, dos, tres];
enum [cinco = 5, seis, diez = 10, once];
Lo anterior es sólo un ejemplo ya que habría colisión de nombres en 'uno' y 'dos'; no puede existir nombres iguales en el mismo ámbito.
Puedes utilizar enumeraciones de las siguientes maneras.

Tipo 'enum' con etiqueta 'operaciones'.

Código: Seleccionar todo

enum operaciones { Suma = 1, Resta };

void funcion () {
	enum operaciones opcion = Suma;
	enum operaciones resta = Resta;
	enum operaciones expr1 = Suma + 1;
}
Alias hacia un tipo 'enum' con etiqueta anónima, que es el que estas utilizando.

Código: Seleccionar todo

typedef enum { Suma = 1, Resta } operaciones;

void funcion () {
	operaciones opcion = Suma;
	operaciones otro = Resta;
}
Definición de 'opcion' de tipo 'enum' con etiqueta anónima.

Código: Seleccionar todo

enum  { Suma = 1, Resta } opcion;

void funcion () {
	opcion = Suma;
}
Definición de 'opcion' de tipo 'enum' con etiqueta 'operaciones'.

Código: Seleccionar todo

enum operaciones { Suma = 1, Resta } opcion;

void funcion () {
	opcion = Suma;
	enum operaciones otro = Resta;
}
Saludos.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados