Les structures conditionnelles

Said -  
Dalfab Messages postés 706 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

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut Said,

est ce qu'on peut utiliser les switch pour comparer deux nombres

https://en.cppreference.com/w/c/language/switch

Comme
switch
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 que
    0
    )
  • et à comparer le résultat de cette évaluation à la constante
    0
    avec un
    case
    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 un
if then else
.

sans demander à l'utilisateur de choisir un opérateur

L'opérateur de comparaison sera dans le code, que ce soit un
switch
ou un
if then else
... je ne comprends pas cette partie de ta question.

Dal
1
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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 :-)
0
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
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;
}
0