Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Tipo enumerativo C++

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    10

    Tipo enumerativo C++

    Salve a tutti ... Sono alle prime armi con il C++ e ho dei problemi con il tipo enumerativo.
    Se chiamo lo scanf per ricevere un intero faccio
    scanf("%d",&variabile);
    Cosa devo scrivere al posto di %d se voglio ricevere in ingresso un dato di tipo enumerativo?????

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    I dati enumerativi sono comunque numeri ... quindi, da tastiera, devi inserire il valore numerico corrispondente ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    10
    Non intendevo quello...
    Il programma è questo:


    #include <stdio.h>
    #include <conio.h>
    main()
    {
    typedef enum{inglese,francese,tedesco,italiano}lingua;
    lingua data_input;
    typedef char stringa[20];
    typedef struct language{stringa nome;};
    language en={"Yes"};
    language fr={"Oui"};
    language gr={"Ya"};
    language it={"Si"};
    language result;
    printf("Scegliere una lingua:\n");
    scanf("%d",&data_input);
    switch(data_input)
    {
    case inglese:
    result=en;
    case francese:
    result=fr;
    case tedesco:
    result=gr;
    case italiano:
    result=it;
    }
    printf(result.nome);
    getch();
    }

    Se faccio così quando scrivo, per esempio inglese, premo invio e non succede niente... Invece se scrivo un il numero corrispondente mi dà sempre come risultato "Sì"... Perchè??

  4. #4
    Originariamente inviato da mirko89
    Se faccio così quando scrivo, per esempio inglese, premo invio e non succede niente...
    È normale, la scanf si aspetta un intero e tu le fornisci una stringa; di conseguenza non memorizza niente in data_input che rimane impostato ad un valore non definito che non corrisponde a nessun valore dell'enum. Tieni conto che gli enum, una volta compilato il programma, sono dei normali interi, i nomi contenuti in un enum in un programma compilato non hanno alcun significato.
    Invece se scrivo un il numero corrispondente mi dà sempre come risultato "Sì"... Perchè??
    Perché hai dimenticato i break alla fine di ogni blocco case.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.