L'évaluation de l'Expression en C/C++ ne marche pas suivre BODMAS règle?
Lorsqu'une expression est évaluée en C/C++, est-ce BODMAS [Support ouvrir la Division de Multiplier Addition Soustraction] règle? Si non, alors comment sont-ils évalués?
EDIT: Plus clairement, Si l'expression suivante est évaluée en fonction des BODMAS règle,
(5 + 3)/8*9
D'abord ce qui est entre parenthèses est traitée.
8/8*9.
Puis de la Division est fait.
1*9
Et puis la multiplication et ainsi de suite.
Je pensais que c'était BEDMAS pour les Équerres de Exposants de la Division de la Multiplication Addition Soustraction?
(Pouvoirs, entre Parenthèses), de la Division, la Multiplication, l'Addition, la Soustraction est ce que mon 6ème professeur m'a enseigné. (Merci Dr Fegley!)
J'ai appris BODMAS où l'O "de", comme dans "1/2 de 8" (sûr, j'ai appris que bien avant que les exposants ont été introduites). J'ai toujours pensé que l'ajout d'un faux "de" l'opérateur a été une mauvaise excuse pour obtenir un prononçable acronyme.
J'ai toujours entendu dire
Votre titre que le C++ n'est pas de suivre BODMAS. Ce qui vous fait penser à qui? Avez-vous trouvé une expression qui se comporte bizarrement?
(Pouvoirs, entre Parenthèses), de la Division, la Multiplication, l'Addition, la Soustraction est ce que mon 6ème professeur m'a enseigné. (Merci Dr Fegley!)
J'ai appris BODMAS où l'O "de", comme dans "1/2 de 8" (sûr, j'ai appris que bien avant que les exposants ont été introduites). J'ai toujours pensé que l'ajout d'un faux "de" l'opérateur a été une mauvaise excuse pour obtenir un prononçable acronyme.
J'ai toujours entendu dire
PEMDAS
Parenthèses, Exponentiation, Multiplication, Division, Addition, de la Soustraction.Votre titre que le C++ n'est pas de suivre BODMAS. Ce qui vous fait penser à qui? Avez-vous trouvé une expression qui se comporte bizarrement?
OriginalL'auteur Shubham | 2010-10-25
Vous devez vous connecter pour publier un commentaire.
Il y a beaucoup plus d'opérateurs que cela. Vous pouvez trouver une priorité tables pour C++ et C.
Mais oui, vous trouverez il le respecte. (Même si je ne suis pas certain que c'est exactement ce que vous avez dit...)
Les sous-expressions ont indéterminée ordre d'évaluation, oui.
OriginalL'auteur GManNickG
Il y a deux réponses à cette question.
Est que C++ ne suivre la norme mathématique règles de priorité, dont vous parlez comme BODMAS. Vous pouvez voir l'ordre dans lequel C++ associe l'ensemble de ses opérateurs ici.
Toutefois, si l'une des expressions impliqués dans l'opération ont des effets secondaires, alors C++ est pas garanti pour évaluer ce que l'on pourrait considérer comme la norme de l'ordre mathématique. C'est en quelque sorte un sujet avancé, cependant.
OriginalL'auteur John Calsbeek
D'autres personnes vous ont donné des liens de précédence des opérateurs de listes. Ceux-ci sont bien et bon. Toutefois, si vous avez besoin de regarder une priorité de l'opérateur tableau pour déterminer ce que votre code indique ordinateurs, veuillez prenez pitié de votre code de responsables (y compris les futurs vous) et il suffit d'utiliser des parenthèses. Il rend votre intention beaucoup plus claire et permet de gagner du temps et de chagrin dans le long terme.
J'ai en revanche penser que de nombreux adjacentes entre parenthèses le code bien plus difficile à lire et donc je cherche toujours à réduire le nombre de parenthèses si la lisibilité n'en souffre pas (ce qui est apparemment une mesure subjective).
En général, si c'est la multiplication vs plus, je vais les laisser, mais pour des choses comme les déréférencement du pointeur et boolean vs opérateurs au niveau du bit, je trouve ça plus sûr de les conserver (
if (foo & bar != 0)
)J'ai délibérément de ne pas mémoriser le tableau de précédence. De cette façon, si elle est susceptible d'être clair pour quelqu'un d'autre, alors il est probable que cela soit clair pour moi et je vais instinctivement mis entre parenthèses.
OriginalL'auteur nmichaels
C++: http://msdn.microsoft.com/en-us/library/126fe14k.aspx
C#: http://msdn.microsoft.com/en-us/library/aa691323(SV.71).aspx
OriginalL'auteur Athari
C s'applique aux opérateurs dans les expressions arithmétiques dans une séquence précise déterminée par les règles de priorité des opérateurs, qui sont généralement les mêmes que ceux de l'algèbre:
Opérateurs dans les expressions contenues dans les paires de parenthèses sont évaluées en premier. Les parenthèses sont dit être au “plus haut niveau de priorité.” En cas de imbriqués, ou incorporé, entre parenthèses, comme
( ( a + b ) + c )
les opérateurs au plus profond de la paire de parenthèses sont appliquées en premier.
La Multiplication, la division et le reste des opérations sont appliquées suivant. Si une expression contient plusieurs multiplication, la division et le reste des opérations, l'évaluation se déroule de gauche à droite. La Multiplication, la division et le reste sont dit être sur le même niveau de priorité.
L'Addition et la soustraction des opérations sont évaluées suivant. Si une expression contient plusieurs addition et la soustraction des opérations, l'évaluation se déroule de gauche à droite. L'Addition et la soustraction également avoir le même niveau de priorité, qui est inférieure à la priorité de la multiplication, la division et le reste des opérations.
L'opérateur d'affectation (=) est évaluée en dernier.
OriginalL'auteur Sachin Mewar