Show 例子 7
优质
小牛编辑
125浏览
2023-12-01
运算符优先级确定表达式中的术语分组。 这会影响表达式的计算方式。 某些运算符优先于其他运算符。
例如,乘法运算符的优先级高于加法运算符。
让我们考虑一个表达
x = 7 + 3 * 2。
这里,x被赋值为13,而不是20.简单的原因是,运算符*的优先级高于+,因此首先计算3 * 2,然后将结果加到7中。
此处,具有最高优先级的运算符显示在表的顶部,具有最低优先级的运算符显示在底部。 在表达式中,首先计算更高优先级的运算符。
类别 | 操作者 | 关联性 |
---|---|---|
Postfix | ()[] - >。 ++ - - | 左到右 |
Unary | + - ! 〜++ - - (类型)*&sizeof | 右到左 |
Multiplicative | * /% | 左到右 |
Additive | + - | 左到右 |
Shift | << >> | 左到右 |
Relational | << => = | 左到右 |
Equality | ==!= | 左到右 |
Bitwise AND | & | 左到右 |
Bitwise XOR | ^ | 左到右 |
Bitwise OR | | | 左到右 |
Logical AND | && | 左到右 |
Logical OR | || | 左到右 |
Conditional | ?: | 右到左 |
Assignment | = + = - = * =/=%= >> = << =&= ^ = | = | 右到左 |
Comma | , | 左到右 |
例子 (Example)
请尝试以下示例以了解D编程语言中可用的运算符优先级 -
import std.stdio;
int main(string[] args) {
int a = 20;
int b = 10;
int c = 15;
int d = 5;
int e;
e = (a + b) * c/d; // ( 30 * 15 )/5
writefln("Value of (a + b) * c/d is : %d\n", e );
e = ((a + b) * c)/d; // (30 * 15 )/5
writefln("Value of ((a + b) * c)/d is : %d\n" , e );
e = (a + b) * (c/d); // (30) * (15/5)
writefln("Value of (a + b) * (c/d) is : %d\n", e );
e = a + (b * c)/d; // 20 + (150/5)
writefln("Value of a + (b * c)/d is : %d\n" , e );
return 0;
}
编译并执行上述程序时,会产生以下结果 -
Value of (a + b) * c/d is : 90
Value of ((a + b) * c)/d is : 90
Value of (a + b) * (c/d) is : 90
Value of a + (b * c)/d is : 50