Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

161
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda