当在C / C ++中评估表达式时,它是否遵循BODMAS [Bracket open Division Multiply Addition Substraction]规则?如果没有,那么他们如何评估?
编辑:更清楚,如果根据BODMAS规则评估以下表达式,
(5 + 3)/ 8 * 9
首先处理括号中的内容。
8/8 * 9。
然后分工完成。
1 * 9
然后乘法等等。
答案 0 :(得分:5)
答案 1 :(得分:5)
这个问题有两个答案。
一个是C ++ 遵循标准的数学优先级规则,您将其称为BODMAS。您可以看到C ++关联其所有运算符的顺序here。
但是,如果操作中涉及的任何表达式都有副作用,那么C ++ 不保证在人们可能认为是标准数学顺序的情况下对它们进行评估。然而,这是一个高级主题。
答案 2 :(得分:2)
其他人已经为您提供了运营商优先级列表的链接。这些都很好。但是,如果您需要查看运算符优先级表以确定代码告诉计算机要执行的操作,那么请对您的代码维护者(包括将来的您)表示同情,并使用括号。它使你的意图更加清晰,从长远来看可以节省时间和心痛。
答案 3 :(得分:1)
C ++:http://msdn.microsoft.com/en-us/library/126fe14k.aspx
C#:http://msdn.microsoft.com/en-us/library/aa691323(VS.71).aspx
答案 4 :(得分:0)
C按照下列运算符优先级规则确定的精确顺序将运算符应用于算术表达式中,这些规则通常与代数相同:
首先要评估括号对中包含的表达式中的运算符。括号被称为“最高优先级”。在嵌套或嵌入括号的情况下,例如
((a + b)+ c)
最里面一对括号中的运算符被首先应用。
接下来将应用乘法,除法和余数运算。如果一个表达式包含多个乘法,除法和余数运算,则评估从左到右进行。据说乘法,除法和余数处于相同的优先级。 接下来评估加法和减法运算。如果一个表达式包含多个加法和减法运算,则评估从左到右进行。加法和减法也具有相同的优先级,该优先级低于乘法,除法和余数运算的优先级。 赋值运算符(=)最后求值。
答案 5 :(得分:-1)
我发现一个表达式不跟在“ BODMAS”之后。这是我的c程序供您参考
#include <stdio.h>
int main() {
int a = 6;
int b = 4;
int c = 2;
int result;
result = a - b + c; // 4
printf("%d \n", result);
result = a + b / c; // 8
printf("%d \n", result);
result = (a + b) / c; // 5
printf("%d \n", result);
return 0;
}