因为乘法有一个更高的优先级比加法

为了正确地评估表达式,如4 + 2 * 3,我们必须了解运营商做什么,以及正确的顺序,适用于他们。运算符在复合表达式中计算的顺序称为运算符优先级。使用正常的数学优先规则(在加法之前求解乘法的状态),我们知道上面的表达式应该以4 +(2 * 3)来计算,以产生值。
在C++中,所有操作都分配了一个级别的优先。优先评价最高的。你可以在下面的表格中看到乘法和除法(优先级5)比加法和减法有更高的优先级(优先级为6)。编译器使用这些级别来决定如何评估它遇到的表达式。
因此,4 + 2 * 3计算为4 +(2 * 3),因为乘法有一个更高的优先级比加法。

如果两个具有相同优先级的运算符表达水平在彼此相邻的关联规则告诉编译器是否对运营商从左到右或从右到左。例如,在表达式3 * 4 / 2中,乘法和除法运算符都是优先级为5。5级有左至右关联,所以表达式是从左到右的解决:(3×4)/ 2 = 6。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// note: exp must be non-negative
int pow(int base, int exp)
{
    int result = 1;
    while (exp)
    {
        if (exp & 1)
            result *= base;
        exp >>= 1;
        base *= base;
    }
 
    return result;
}
如果你不理解这个函数的所有部分,不要担心。只是小心溢出你的整数结果,这可能会很快发生,如果任一参数是大。
测验
1)你知道从日常数学的括号内的表达式得到评估第一。例如,在表达式(2 + 3)* 4,(+ 3)部分进行评估第一。
对于这个练习,你得到了一组没有括号的表达式。使用运算符的优先级和结合性上面表中的规则,添加括号每个表达清楚编译器如何将计算表达式。
提示:使用样式表中的列以上判断经营者是否是一元(有一个操作数)或二进制(有两个操作数)。综述部分1.5,首先看运营商如果你需要对一元和二元运算符是一个进修。

你可能感兴趣的:(因为乘法有一个更高的优先级比加法)