Les structures conditionnelles

Said -  
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

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    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
    1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      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
  2. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    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