L'extension de la plage de boîtiers GNU permet de convertir des étages de cas: Comment convertiriez-vous cela en C99 ou C89)? Ajouter les déclarations de cas individuelles? P> Edit: Comment géreriez-vous des énoncés de très gros commutateurs spécifiquement? P> p>
4 Réponses :
if (value >=1 && value <= 8) { printf("Hello, 1 to 8\n"); } else { printf("Hello, default\n"); }
J'essaie de remplacer un cas 32 ... 126: :) Ça va être une longue déclaration de commutation ...
Existe-t-il un moyen de générer ces cas avec le préprocesseur C?
@YNV: Vous voudrez peut-être simplement passer à l'utilisation d'une série de déclarations si-d'autre.
@Kevinballard: l'instruction de commutation comporte plusieurs centaines SLOC :) (manipulation des entrées de caractères dans une application de malédiction.)
@YNV: Pourquoi n'avez-vous pas mentionné tous les détails dans l'original Q? Vous devriez afficher tous les détails pertinents lorsque vous demandez à une Q Not sélectivement, révélez-les comme les réponses versées dans.Not fournissant tous les détails en one-Go permet de répondre aux réponses à votre Q de l'original (avec des informations non retenues) sans importance et faites-les regarder stupide. .
@Als: Tu as raison, je suis désolé. J'ai ajouté un commentaire à la question. Espère que cela rend les réponses appropriées.
@YNV: Merci. Le secret pour obtenir des réponses rapides et correctes exprime le problème correctement et proprement.So, je n'ai pas voulu indiquer d'accepter une réponse même si cela ne vous satisfait pas. Si I> Vous n'êtes pas satisfait des réponses existantes, vous pouvez attendre plus de réponses à entrer puis acceptez une réponse qui vous aide à résoudre le mieux.
@Aloksave Ajouter: 5.21 gammes de cas < / a>
Si longue portée que vous puissiez faire, un peu sale mais, le meilleur serait grève> probablement grève> être pour supprimer le commutateur pour un si tout ensemble. p> être extrêmement strict avec la nidification. Si vous voulez l'interrupteur, pour une raison quelconque, mieux, mieux ce qui précède serait: p> ACH, désolé d'être modifié à nouveau. ceci fort> serait plus propre. p>
J'utiliserais un Vous pouvez ensuite ajouter des instructions code> si code> si plus de gammes sont nécessaires, < / p> p> si code> instruction:
Alternativement, car les nombres sont adjacents les uns aux autres, vous pouvez effectuer une optimisation manuelle du boîtier de commutation.
typedef void(*func_t)(void); #define CASES_N 9 void func0 (void) { printf("Hello, 0\n"); } void func1 (void) { printf("Hello, 1 to 8\n"); } static const func_t execute [CASES_N] = { &func0, &func1, &func1, &func1, &func1, &func1, &func1, &func1, &func1 }; int main() { if(what < CASES_N) { execute[what](); } else { printf("Hello, default\n"); } }