Cours sur les opérateurs : il y a deux types d'opérateur, les opérateurs unaires et les opérateurs binaires.
Les opérateurs unaire ne prennent en argument qu'une seule opérande. Prenons -1 par exemple. Dans ce cas, l'opérateur - est unaire, n'ayant qu'une opérande.
Les opérateurs binaire, quant à eux, utilisent deux opérandes. Prenons "5 - 3". Ici, l'opérateur - est binaire. Il a comme opérande 5 et 3.
+ et - sont des opérateurs pouvant être unaires ou binaires, dépendant du contexte.
Les autres opérateurs sont binaires.
Les opérateurs de comparaison (>; <; >=; <=; ==; !=) sont binaires.
Dans ton cas "2<=a<=4", tu utilises deux opérateurs binaires à la suite. De mémoire, l'ordre des opérations n'est pas défini (il faudrait lire les spec' du compilateur pour ça).
En somme, puisque les opérateurs sont binaires, la première opération effectuée sera, par exemple, "2 <= a", qui renvoi un booléen.
Ensuite vient la suite de l'instruction, soit "boolean <= 4", d'où l'erreur.
Les opérations sont résolues comme elles le doivent. Pour t'aider à te représenter la chose, "2 <= a <= 4" pourrait s'écrire "(2 <= a) <= 4" (ou "2 <= (a <= 4)", dépend) pour illustrer un ordre de priorité. Avec cette représentation, il est plus facile de comprendre qu'il y a un problème.
Ainsi, pour vouloir tester si une valeur est comprise entre d'autres, il faut tester cas par cas en liant avec l'opérateur logique ET.
Donc, pour savoir si a est compris entre 2 et 4, il faut faire "2 <= a && a <= 4". Algèbre de Boole, comparaison de booléen, table de vérités, tout ça...
Dans le cas où a est un entier, on peut aussi simplement écrire "a == 3", puisqu'aucune autre valeur n'existe dans cet ensemble entre 2 et 4.