- D 编程基础
 - D 编程 - 主页
 - D 编程 - 概述
 - D 编程 - 环境
 - D 编程 - 基本语法
 - D 编程 - 变量
 - D 编程 - 数据类型
 - D 编程 - 枚举
 - D 编程 - 文字
 - D 编程 - 运算符
 - D 编程 - 循环
 - D 编程 - 决策
 - D 编程 - 函数
 - D 编程 - 字符
 - D 编程 - 字符串
 - D 编程 - 数组
 - D 编程 - 关联数组
 - D 编程 - 指针
 - D 编程 - 元组
 - D 编程 - 结构
 - D 编程 - 联合
 - D 编程 - 范围
 - D 编程 - 别名
 - D 编程 - Mixins
 - D 编程 - 模块
 - D 编程 - 模板
 - D 编程 - 不可变
 - D 编程 - 文件 I/O
 - D 编程 - 并发
 - D 编程 - 异常处理
 - D 编程 - 合同
 - D - 条件编译
 
- D 编程 - 面向对象
 - D 编程 - 类和对象
 - D 编程 - 继承
 - D 编程 - 重载
 - D 编程 - 封装
 - D 编程 - 接口
 - D 编程 - 抽象类
 
- D 编程 - 有用的资源
 - D 编程 - 快速指南
 - D 编程 - 有用的资源
 - D 编程 - 讨论
 
D 编程 - 运算符优先级
运算符优先级决定表达式中术语的分组。这会影响表达式的计算方式。某些运算符优先于其他运算符。
例如,乘法运算符的优先级高于加法运算符。
让我们考虑一个表达式
x = 7 + 3 * 2。
这里,x 被分配为 13,而不是 20。原因很简单,运算符 * 的优先级高于 +,因此先计算 3*2,然后将结果与 7 相加。
在这里,优先级最高的运算符出现在表的顶部,优先级最低的运算符出现在底部。在表达式中,首先计算优先级较高的运算符。
| 类别 | 操作员 | 关联性 | 
|---|---|---|
| 后缀 | () [] -> . ++ - - | 左到右 | 
| 一元 | + - ! ~ ++ - - (类型)* & sizeof | 右到左 | 
| 乘法 | * / % | 左到右 | 
| 添加剂 | + - | 左到右 | 
| 转移 | <<>> | 左到右 | 
| 关系型 | <<=>>= | 左到右 | 
| 平等 | ==!= | 左到右 | 
| 按位与 | & | 左到右 | 
| 按位异或 | ^ | 左到右 | 
| 按位或 | | | 左到右 | 
| 逻辑与 | && | 左到右 | 
| 逻辑或 | || | 左到右 | 
| 有条件的 | ?: | 右到左 | 
| 任务 | = += -= *= /= %=>>= <<= &= ^= |= | 右到左 | 
| 逗号 | , | 左到右 | 
例子
尝试以下示例来了解 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
d_programming_operators.htm