C++ avertissement: suggérer des parenthèses autour de l'arithmétique dans l'opérande de |
J'ai un code comme
A = B|C|D|E;
Lancer l'avertissement "suggérer des parenthèses autour de l'arithmétique dans l'opérande de |"
Attend à ce que l'expression de besoins de haute priorité paranthesis pour les opérateurs, essayé l'une des manières suivantes:
A=(B|C)|(D|E);
un de plus que :
A=(((B|C)|D)|E);
Toujours le même avertissement persiste.
Merci de m'aider dans la résolution de ce.
Grâce,
Sujatha
B, C,D sont des énumérations et E est un nombre entier.
le compilateur que vous utilisez?
Votre exemple compile sans warning avec GCC.
Quelles sont B, C, D et E, exactement?
Sont A,B,C,D des macros?
Exécuter votre fichier source par le biais de
Votre exemple compile sans warning avec GCC.
Quelles sont B, C, D et E, exactement?
Sont A,B,C,D des macros?
Exécuter votre fichier source par le biais de
gcc -E
et chercher à la sortie. Êtes-vous absolument certain que le compilateur interprétations de A, B, C, D, et E sont ce à quoi vous pensez qu'ils sont?OriginalL'auteur Programmer | 2010-06-04
Vous devez vous connecter pour publier un commentaire.
Vous avez quelques opérateur arithmétique dans votre expression qui n'est pas vraiment simplement B, ou qui n'est pas vraiment simplement C, etc. Le compilateur est suggérer que vous parenthesize selon l'expression de sorte que les lecteurs verront que vous avez écrit ce que vous avez voulu dire. Si vous n'avez pas parenthesize, tout le monde doit se rappeler exactement quelles sont les priorités, et qu'ils ont à comprendre si vous rappeler quand vous avez écrit.
Essayez ce qui suit: (B)|(C)|(D)|(E).
Je pense que vous feriez mieux de faire ce que greyfade suggéré, exécutez le fichier source par gcc-E. l'Un de vos énumérations peuvent accidentellement être une macro que vous ne connaissiez pas.
OriginalL'auteur Windows programmer
C'est un étrange avertissement. Vous ne vraiment besoin de prêter attention à la priorité lorsque vous êtes à l'aide de différents opérateurs et les opérateurs ont différentes priorités. Par exemple, dans l'arithmétique de multiplication a une priorité plus élevée que l'addition.
Mais dans ce cas, vous n'utilisez qu'un seul opérateur à plusieurs reprises. Or au niveau du bit est associative et commutative (
(A | B) | C == A | (B | C)
etA | B == B | A
) donc il n'y a vraiment aucune raison de l'avertissement.OriginalL'auteur Max Lybbert