Si les déclarations ne fonctionnent pas?

Je suis un noob à la programmation. Je voulais juste demander ce qui ne va pas avec le code suivant:

scanf("%i", &battlechoice); printf("BCHOICE WAS:%i\n", battlechoice); if (battlechoice=4) //fleeing { fleechance=rand() % 100; if (fleechance <= 49) { printf("You attempt to flee...\n"); sleep(2000); printf("Oh dear! You failed to flee! Gamover!\n"); printf("Thank you for playing! -Anthony\n"); sleep(7000); exit(0); } else { printf("You succeeded in fleeing! You will be returned to town\nshortly...\n\n\n\n\n"); sleep(3000); break; } } //end fleeing else if (battlechoice=1) //attacking { //player damage gen printf("You commence the attack...\n"); sleep(750); damagemax = rand() % lvl * 1.4; damageoutcome = damagemax + damagemin; } 

Qu’est-ce qui se passe, c’est qu’il fait les deux déclarations si, même si les deux ont des conditions différentes? Qu’est-ce qui ne va pas? Merci d’avance.

Vous confondez l’opérateur d’assignation = avec l’opérateur égal == . Écrivez ceci à la place:

 if (battlechoice == 4) 

Etc.

Certains programmeurs utilisent des “conditionnels de Yoda” pour éviter d’utiliser accidentellement une affectation dans les cas suivants:

 if (4 == battlechoice) 

Par exemple cela ne comstackra pas, attrapant l’erreur:

 if (4 = battlechoice) 

vous écrivez si (battlechoice = 4) corrigez-le avec if (battlechoice == 4)

car les opérateurs ‘=’ et ‘==’ sont tous deux différents

‘=’ est un opérateur d’assignation et ‘==’ est un opérateur de comparaison

voir le lien pour les opérateurs en C http://www.tutorialspoint.com/cplusplus/cpp_operators.htm