2 votes

L'évaluation d'une expression en C/C++ ne suit pas la règle BODMAS ?

Lorsqu'une expression est évaluée en C/C++, suit-elle la règle BODMAS [Bracket open Division Multiply Addition Substraction] ? Si non, comment sont-elles évaluées ?

EDIT : Plus clairement, si l'expression suivante est évaluée selon la règle BODMAS,

(5 + 3)/8*9

D'abord, ce qui est entre parenthèses est traité.

8/8*9.

Alors la division est faite.

1*9

Et ensuite la multiplication et ainsi de suite.

5voto

GManNickG Points 155079

Il y a beaucoup plus d'opérateurs que cela. Vous pouvez trouver un tableau de précédence pour C++ y C .

Mais oui, vous trouverez qu'il respecte cela. (Bien que je ne sois pas sûr que ce soit exactement ce que vous avez dit...)

5voto

John Calsbeek Points 19381

Il y a deux réponses à cette question.

La première est que le C++ fait suivent les règles de préséance mathématiques standard, que vous appelez les BODMAS. Vous pouvez voir l'ordre dans lequel le C++ associe tous ses opérateurs aquí .

Toutefois, si l'une des expressions impliquées dans l'opération a des effets secondaires, alors le C++ est pas garanti de les évaluer dans ce que l'on pourrait considérer comme un ordre mathématique standard. Il s'agit toutefois d'un sujet assez avancé.

2voto

nmichaels Points 21955

D'autres personnes vous ont donné des liens vers des listes de précédence d'opérateurs. Ces listes sont très bien. Cependant, si vous avez besoin de consulter un tableau de précédence des opérateurs pour déterminer ce que votre code demande aux ordinateurs de faire, s'il vous plaît ayez pitié des mainteneurs de votre code (y compris du futur vous) et utilisez simplement les parenthèses. Cela rendra votre intention beaucoup plus claire et vous fera gagner du temps et de la peine à long terme.

1voto

0voto

Sachin Mewar Points 64

C applique les opérateurs des expressions arithmétiques dans un ordre précis déterminé par les règles suivantes de préséance des opérateurs, qui sont généralement les mêmes que celles de l'algèbre :

Les opérateurs des expressions contenues dans des paires de parenthèses sont évalués en premier. On dit que les parenthèses sont au "plus haut niveau de préséance". Dans le cas de parenthèses imbriquées, ou encastrées, telles que ( ( a + b ) + c )
les opérateurs de la paire de parenthèses la plus intérieure sont appliqués en premier.

Les opérations de multiplication, de division et de reste sont ensuite appliquées. Si une expression contient plusieurs opérations de multiplication, de division et de reste, l'évaluation se fait de gauche à droite. On dit que la multiplication, la division et le reste sont au même niveau de précédence. Les opérations d'addition et de soustraction sont évaluées ensuite. Si une expression contient plusieurs opérations d'addition et de soustraction, l'évaluation se fait de gauche à droite. L'addition et la soustraction ont également le même niveau de précédence, qui est inférieur à la précédence des opérations de multiplication, de division et du reste. L'opérateur d'affectation (=) est évalué en dernier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X