IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

taille maximum d'un entier pour un switch


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 99
    Points
    99
    Par défaut taille maximum d'un entier pour un switch
    bonjour à tous,

    j'ai réalisé le code suivant pour parser certain evenements

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    #define CAPAB_START 0x01
    #define CAPAB_CAPABILITIES 0x02
    #define CAPAB_MODULES 0x04
     
    static struct aCapab
    {
    	const char *type;
    	int flag;
    } capab_opt[] = {
    	{"START", CAPAB_START},
    	{"CAPABILITIES", CAPAB_CAPABILITIES},
    	{"MODULES", CAPAB_MODULES},
    };
     
    /*
    * CAPAB START
    * CAPAB CAPABILITIES :VAR=VALUE {[VAR=VALUE]}
    * CAPAB MODULES <module list>
    * CAPAB END
    */
    int events_capab(int argc, char **argv)
    {
    	const char *type = argv[1];
    	int flag;
    	unsigned int i;
     
    	for (i=0;i<ASIZE(capab_opt);++i)
    	{
    		if (!strcasecmp(capab_opt[i].type, type))
    		{
    			flag |= capab_opt[i].flag;
    			printf("capab match %s => %s\n", capab_opt[i].type, type);
    		}
    	}
     
    	switch (flag)
    	{
    		case CAPAB_START:
    			printf("START\n");
    			break;
    		case CAPAB_CAPABILITIES:
    			printf("CAPBILITIES\n");
    			break;
    		case CAPAB_MODULES:
    			printf("MODULES\n");
    			break;
    		default:
    			printf("Unknow flag: %d\n", flag);
    			break;
    	}
    	return 0;
    }
    tout ce passe bien jusqu'au switch je me retrouve avec des flags inconnus, j'ai du faire une connerie, je n'ai pas trouvé la taille maximum autorisé pour un entier pour la condition switch. Ai-je merdé autre part ? merci à vous

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    flag |= capab_opt[i].flag;
    ...
    switch (flag)
    flag n'a pas été initialisé. Résultat : n'importe quoi !

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 99
    Points
    99
    Par défaut
    comment ca il n'a pas été initialisé ? s'il y a correspondance dans la boucle for il est initialisé dc même s'il ne l'est pas en dehors, lors du switch il n'est pas censé au moins voir les correspondances et m'afficher ceux qui ont été trouvé ?

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Non, il ne l'est pas :
    Lorsqu'on arrive sur la ligne for(....), sa valeur est quelconque et quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    flag |= capab_opt[i].flag;
    tu fais un OU entre n'importe quoi et capab_opt[i].flag. Donc le résultat est n'importe quoi !

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 99
    Points
    99
    Par défaut
    en effet, autant pour moi j'ai reglé ca merci bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ODS] Taille maximum pour le "chemin" de sortie d'un ODS RTF
    Par alers dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 14/11/2014, 17h34
  2. Réponses: 0
    Dernier message: 25/07/2007, 14h00
  3. Taille maximum pour TStringList
    Par ryko dans le forum Delphi
    Réponses: 2
    Dernier message: 02/08/2006, 17h06
  4. Taille maximum de tableau en Delphi
    Par yannick37 dans le forum Langage
    Réponses: 5
    Dernier message: 03/03/2004, 13h18
  5. [Tableau] taille maximum
    Par vasilov dans le forum C
    Réponses: 15
    Dernier message: 01/08/2003, 10h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo