et (&&
) a priorité supérieure ou (||
), afin d'exprimer ce que vous voulez vous avez besoin:
if ((location[0] <= 'H' || location[0] >= 'A') && (location[1] <= 8 || location[1] >= 1))
Sinon ce qui se passe est-ce que c'est ça fait l'équivalent de ceci:
if (location[0] <= 'H' || (location[0] >= 'A' && location[1] <= 8) || location[1] >= 1)
Ce qui n'est clairement pas ce que vous vouliez.
Vous pouvez mettre autant d'expressions dans la condition que vous le souhaitez, mais vous devez vous rappeler les règles de priorité; Je suggère toujours d'utiliser des parenthèses supplémentaires pour plus de clarté. Comme Jeremiah l'a souligné dans les commentaires, la condition ne ferait toujours pas ce que vous vouliez - vous demandez si quelque chose est dans une plage donnée en vérifiant si c'est soit moins que la limite supérieure ou supérieure que la borne inférieure (ce qui couvre toutes les entrées), lorsque vous avez l'intention de vérifier si l'entrée était à la fois plus grand que la limite inférieure et inférieure à la supérieure:
if (location[0] <= 'H' && location[0] >= 'A' && location[1] <= 8 && location[1] >= 1)
Dans ce cas, étant donné que les opérateurs sont tous &&
, aucune parenthèse supplémentaire n'est nécessaire, mais vous pouvez les ajouter pour plus de clarté.
Je suppose que ce que je suis vraiment après, est combien d'arguments peuvent être mis à l'intérieur d'une déclaration conditionnelle? – bluetickk
Pour référence future: http://www.cppreference.com/wiki/language/operator_precedence – Muggen