Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

160
Vistas
Uso de enumeración con switch-case en C
#include <stdio.h> #include <stdlib.h> enum gender {male, female}; int main () { enum gender choice; printf("Your gender: "); scanf("%u", &choice); switch(choice) { case male: printf("You're a man."); break; case female: printf("You're a woman."); break; default: printf("Try again."); } return 0; }

No importa lo que escriba en la consola, me muestra el caso 'masculino', 'Eres un hombre'. He intentado escribir casos con comillas y comillas simples, pero no funciona. ¿Me puedes ayudar? Esa es mi primera pregunta aquí y también lo siento por mi inglés si tuve algún error.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Del Estándar C (6.7.2.2 Especificadores de enumeración)

4 Cada tipo enumerado debe ser compatible con char, un tipo entero con signo o un tipo entero sin signo. La elección del tipo está definida por la implementación, 128) pero debe ser capaz de representar los valores de todos los miembros de la enumeración.

Significa que internamente un objeto de un tipo de enumeración no es necesariamente almacenado como un objeto del tipo int o unsigned int. Puede almacenarse internamente como un objeto del tipo char.

Así que esta llamada de scanf

 scanf("%u", &choice);

invoca un comportamiento indefinido.

Debe usar una variable intermedia del tipo unsigned int y después de la llamada de scanf con esta variable, asigne su valor entero a la elección del objeto.

Otro enfoque es, por ejemplo, declarar un objeto del tipo char y pedirle al usuario que ingrese 'm' para hombre o 'f' para mujer. Después de eso, puede convertirlo al valor 0 o 1.

Por ejemplo

 char c = 0; scanf( "%c", &c ); if ( c == 'm' ) c = 0; else if ( c == 'f' ) c = 1; else c = 2; choice = c;
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda