J'ai essayé de tester cela moi-même avant de demander au forum mais mon code simple à tester cela n'a pas semblé fonctionnant. Il renvoie toujours la première condition. Ma question est que c'est même possible d'avoir plus de 2 ou des conditions? Ou ma syntaxe est-elle incorrecte? P> p>
9 Réponses :
Vous devez coder votre différence de tests:
if ( (number == 1) || 2 || 3 ) {
Ne mettez-vous pas d'espaces autour de || code>? C'est un peu difficile à lire, ne trouvez-vous pas? :-)
Non, je n'utilise pas d'espaces autour de l'un de mes opérateurs (+, -, ||, <, etc.). Je trouve plus difficile de lire avec tous ces espaces.
Ou mieux: numéro> = 1 && numéro <= 3 code>. Mettre dans les espaces BTW.
Peu importe la façon dont vous formatez le code, il y aura toujours quelqu'un qui préférerait cela différemment. Je préfère généralement les espaces autour des choses comme == code> et
|| code> mais ne mettez pas de place entre
si code> et code> ( code >. Je ne mettez pas non plus le
{ code> à la fin de la ligne, mais cela ne me dérange pas presque autant que cela. :)
Essayez de les séparer tous. Je suis à peu près sûr que votre syntaxe est incorrecte
C'est la syntaxe juridique - probablement pas ce qu'il voulait i>.
J'aurais dû clarifier. Incorrect pour le comportement qu'il attendait.
if ((number==1) || (2) || (3))
if (number > 0 && number < 4) { cout << "Your number was 1, 2, or 3." << endl; } else if (number > 3 && number < 7) { cout << "Your number was 4, 5, or 6." << endl; } else if(number > 0) { cout << "Your number was above 6." << endl; } Is my syntax incorrect? Yes, please know that what you experienced happened because (2) and (3) evaluates to true. Instead you would do number == 1 || number == 2 || number == 3
number == 1 || number == 2 || number == 3
Pendant que vous pouvez (comme d'autres personnes l'ont affiché) ré-écris vos tests pour permettre ce que vous voulez, je pense que cela vaut également la peine d'envisager quelques alternatives. On serait un énoncé de commutation: personnellement, je ferais probablement quelque chose comme ça, je ferais probablement quelque chose comme ça: p> char const *msgs[] = {
"Your number was 1, 2, or 3.\n",
"Your number was 4, 5, or 6.\n"
};
if (number < 1 || number > 6)
std::cout << "Your number was outside the range 1..6.\n";
else
std::cout << msgs[(number-1)/3];
Droit. Pour ma candidature, cependant peu importe ce que les chiffres sont évalués, car ils sont toujours dans la plage 1-9, il suffit d'utiliser le premier exemple de travail pour moi. De plus, je me sentirais comme si je volais si je devais utiliser le deuxième exemple puisque je ne l'ai pas écrit moi-même. : P
Pour une longue liste d'options, vous pouvez souhaiter mettre toutes vos options dans une matrice statique ou un vecteur et vérifiez s'ils contiennent une option:
#include <iostream> #include <vector> #include <algorithm> using namespace std; void menu_prompt(vector<int> list) { static vector<char> menuOptions{'P', 'A', 'M', 'S', 'L', 'Q', 'p', 'a', 'm', 's', 'l', 'q'}; char user_input{}; do { cout << "P - Print numbers" << endl; cout << "A - Add a number" << endl; cout << "M - Display mean of the numbers" << endl; cout << "S - Display the smallest number" << endl; cout << "L - Display the largest number" << endl; cout << "Q - Quit" << endl << endl; cout << "Enter your choice: " << endl; cin >> user_input; } while (std::find(menuOptions.begin(), menuOptions.end(), user_input) == menuOptions.end()); if (user_input == 'P' || user_input == 'p') { //user_choice_print_numbers(list); } else if (user_input == 'A' || user_input == 'a') { //user_choice_add_numbers(list); } else if (user_input == 'M' || user_input == 'm') { //user_choice_mean_numbers(list); } else if (user_input == 'S' || user_input == 's') { //user_choice_smallest_numbers(list); } else if (user_input == 'L' || user_input == 'l') { // user_choice_largest_number(list); } else if (user_input == 'Q' || user_input == 'q') { //user_choice_quit(); } }
Vous devez comparer comme celui-ci p>
un conseil pro fort>
Toujours initialiser les variables, si (numéro == 1 || numéro == 2 || numéro == 3) {...} code>
Vous devez mettre
int numéro {0}; code>
Ne déclarez pas var sans les initialiser. p>
On dirait que vous souhaitez chaîner le ce qui précède doit être écrit comme p> ou, en vérifiant si Exemple: p> Lorsque ou code> S dans ceci:
numéro code> est dans la plage
[1,3] code>: p>
ou code> S (qui sont pas em> gammes), vous pouvez créer une fonction de modèle d'assistance à l'aide d'une expression de pliage (C ++ 17) : p>
chaînées_or code> est instancié, les expressions de pliage se dérouleront: P>
(7 == 1 || 7 == 3 || 7 == 4 || 7 == 6 || 7 == 9) // false
Votre syntaxe est incorrecte.
si (numéro == 1 || numéro == 2 || numéro == 3) code>
J'aimerais voir un exemple avec même deux qui fonctionne, cela ne fonctionnera jamais. Quelles sont vos espérions sur la commande d'évaluation et que choisiriez-vous
si (2) code> ferait-il?
@ MartinkristitiSen utilisant des compétences en déduction, vous pourrez peut-être deviner que je veux une entrée de 1, 2 ou 3 pour renvoyer la première condition; une entrée de 4, 5 ou 6 pour renvoyer la seconde; et une entrée de quoi que ce soit d'autre pour renvoyer la troisième condition. Au lieu de frapper quelqu'un qui est clairement nouveau à C ++, vous pouvez suggérer un meilleur moyen d'écrire mon code.