Les structures conditionnelles
Said
-
Dalfab Messages postés 638 Date d'inscription Statut Membre Dernière intervention -
Dalfab Messages postés 638 Date d'inscription Statut Membre Dernière intervention -
Bonjour, ma question est que est ce qu'on peut utiliser les switch pour comparer deux nombres sans demander à l'utilisateur de choisir un opérateur
Configuration: Android / Chrome 78.0.3904.108
2 réponses
-
Salut Said,
est ce qu'on peut utiliser les switch pour comparer deux nombres
https://en.cppreference.com/w/c/language/switch
Commeswitch
permet de comparer une expression dont l'évaluation est un type entier à des constantes entières, rien ne t'empêche de :- mettre dans le
switch
une comparaison - laquelle sera évaluée à faux, c'est à dire
0
en C, ou vrai (toute autre valeur que0
) - et à comparer le résultat de cette évaluation à la constante
0
avec uncase
pour traiter le cas où l'expression est fausse - et à traiter le cas où l'expression est vraie avec un
default
C'est donc possible, mais très tordu, et j'ai du mal à m'imaginer pourquoi un programmeur C ferait cela au lieu d'utiliser unif then else
.
sans demander à l'utilisateur de choisir un opérateur
L'opérateur de comparaison sera dans le code, que ce soit unswitch
ou unif then else
... je ne comprends pas cette partie de ta question.
Dal-
J'ajouterai que j'ai répondu à ta question de façon littérale sur les parties compréhensibles, mais que, intuitivement, je pense que tu as mal posé ta question et que tu demandais autre chose que tu n'as pas su exprimer clairement avec tes 2 lignes et qu'il nous est difficile de deviner.
Si c'est le cas, je t'invite fortement à préciser ta question, si tu veux espérer avoir une réponse utile :-)
- mettre dans le
-
Bonjour,
"peut-être" que la question est : peut-on séparer les 3 cas de comparaisons de deux données (strictement inférieur, égal, strictement supérieur) en utilisant un switch ?
Il faut utiliser 2 tests biens combinés dans le switch.switch ( (a==b) + (a<=b) ) { case 0: // aucun test vrai printf( "a est strictement supérieur à b\n"); break; case 2: // les 2 tests vrais donc forcément a==b printf( "a est égal à b\n"); break; default: // un seul test vrai, forcément a<=b ET a!=b printf( "a est strictement inférieur à b\n"); break; }