.NET 中的 BODMAS 原理

2024-02-24

今天我发现.NET 框架在进行计算时遵循 BODMAS 操作顺序。即按以下顺序进行计算:

  • Brackets
  • Orders
  • Division
  • 乘法
  • Addition
  • 减法

但是我四处搜索,找不到任何文档来证实 .NET确实遵循这个原则,哪里有这样的文档?如果您能指出正确的方向,我将不胜感激。


请注意,C# 并不按照您在学校学到的方式执行 BODMAS 规则。假设您有:

A().x = B() + C() * D();

您可能天真地认为“首先完成乘法”,然后是加法,最后是赋值,因此,这相当于:

c = C();
d = D();
product = c * d;
b = B();
sum = b + product;
a = A();
a.x = sum;

但事实并非如此。BODMAS 规则仅要求运营按正确的顺序进行;这operands可以按任何顺序计算。

在 C# 中,操作数是计算出来的左到右。因此,在这种情况下,逻辑上会发生的情况与以下内容相同:

a = A();
b = B();
c = C();
d = D();
product = c * d;
sum = b + product;
a.x = sum;

另外,C# 不做every之前的乘法every添加。例如:

A().x = B() + C() + D() * E();

计算如下:

a = A();
b = B();
c = C();
sum1 = b + c;
d = D();
e = E();
product = d * e;
sum2 = sum1 + product;
a.x = sum2;

看,最左边的加法发生在乘法之前;乘法只需在最右边的添加。

基本上,规则是“正确地对表达式加上括号,以便只有二元运算符,然后在评估右侧之前评估每个二元运算符的左侧。”所以我们的例子是:

A().x = ( ( B() + C() ) + ( D() * E() ) );

现在一切都清楚了。最左边的加法是最右边的加法的操作数,因此最左边的加法必须在乘法之前执行,因为左边的操作数总是在右边的操作数之前执行。

如果您对这个主题感兴趣,请参阅我的文章:

http://blogs.msdn.com/b/ericlippert/archive/tags/precedence/ http://blogs.msdn.com/b/ericlippert/archive/tags/precedence/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 中的 BODMAS 原理 的相关文章

  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • vue bootstrap b-collapse:当侧边栏折叠时,更改margin-left内容div

    我对 Vue Bootstrap b collapse 导航栏 侧边栏 内容 有疑问 https jsfiddle net Lvkjn7he 1 https jsfiddle net Lvkjn7he 1 当点击 navbar toggle
  • cakephp 使用 mysql SQL_CALC_FOUND_ROWS 进行分页

    我试图让 Cakephp 分页利用 mysql 中的 SQL CALC FOUND ROWS 功能来返回总行数 同时使用 LIMIT 希望这可以消除 paginateCount 然后 paginate 的双重查询 http dev mysq
  • 如何合并两个图像

    我有一个单一的图像 我有一个带有横幅图像的集合视图 现在 我需要将这两个图像组合成单个图像 而不影响它们的质量和高度 以便我能够下载合并的图像 我搜索但找不到 swift 3 的正确解决方案 我的代码如下 根据你的问题 你必须添加两个图像并
  • 如何在 Swift 中的泛型类上实现 NSCoding?

    我在 Swift XCode beta 5 中的泛型类和 NSCoding 方面遇到问题 具体来说 此示例代码运行良好 class Foo NSObject NSCoding let bar String init bar String s
  • 调用 API 期间出现 cURL 错误。 cURL 错误号:[60] SSL 证书问题:证书链中的自签名证书

    美好的一天 我是服务器设置的新手 我目前正在使用 laravel 5 4 来集成我的快书应用程序 https github com intuit QuickBooks V3 PHP SDK在我的实时服务器上http qb dagnum co
  • sql中的连续天数

    我发现了很多有关连续几天的 stackoverflow QnAs 答案仍然太短 我无法理解发生了什么 为了具体起见 我将制作一个模型 或表格 如果有什么区别的话 我正在使用 postgresql CREATE TABLE work id i
  • 在 JavaScript 中解析 jQuery 数据 (JSON)

    我正在使用 PHP jQuery 和 JSON 现在我需要知道如何在 JavaScript 中解析 jQuery 数据 load php 它通过以下数据返回 jQuery name STA distance 250 code 25 name
  • 同一任务执行多次

    我有 ETA 任务发送到 Celery 的 Redis 代理 它是一个 celery 和 redis 实例 两者都在同一台机器上 问题是 任务被执行多次 我见过任务执行了 4 到 11 次 鉴于我的预计到达时间在 4 11 小时之间 在运行
  • Dropbox 中未同步的 Git 存储库

    我有一个 git 存储库 和工作目录 存储在我的 Dropbox 中 这样我就可以在计算机之间来回移动 而无需提交或存储 阅读 完全不需要任何努力 这一切都很有效 除了一个小烦恼正在变成一个大烦恼之外 每隔一段时间 我会让一台计算机处于完全
  • 如何以编程方式确定当前类的Java字节码版本? [复制]

    这个问题在这里已经有答案了 我遇到的情况是 部署平台是 Java 5 并且开发是在 Java 6 下使用 Eclipse 进行的 我们建立了一个在开始处理给定项目时创建新工作区的过程 因此 所需步骤之一是将编译器级别设置为 Java 5 这
  • 在 AWS Lambda Layers 中找到等效的环境变量?

    我正在 AWS 上编写一个无服务器应用程序 我已将该应用程序分解为许多 Clo udFormation 堆栈 我正在使用 CDK Python 中 创建 CF 堆栈来部署应用程序 当然 我的 lambda 函数的核心要求是能够记录事件 为了
  • 如何获取 ScrollController 的完整大小

    我已将 ScrollController 附加到 SliverAppBar SliverList 的 CustomScrollView 在默认情况下 我会使用reverse true和animateTo 0 0 将滚动移动到添加的最后一个元
  • 没有为“listen ... ssl”指令定义“ssl_certificate”

    我正在尝试为我的网站配置 nginx 服务器 我正在使用以下代码来配置我的服务器 如果我为 www fastenglishacademy fr 443 服务器块添加 default server 它就会起作用 但在这种情况下 我的所有子域也
  • Firebase webpack+babel 功能未部署

    是否可以使 firebase 函数与 webpack 和 babel 一起使用 我们需要在服务器端重用现有的 ES6 类 但我们无法编辑这些类 因此我们需要转译它们以使其在 Node 中工作 花了两天时间学习相关教程 但我遇到了一个问题 即
  • 如何防止用户在iOS上截取应用程序的屏幕截图?

    我想防止用户对我的应用程序进行屏幕截图 并在最近的项目上隐藏其内容 你知道相当于Android的吗FLAG SECURE特征 https developer android com reference android view Window
  • R:创建一个函数来识别任意百分位数

    我正在使用 R 编程语言 我有以下数据集 library dplyr var1 rnorm 10000 100 100 var2 rnorm 10000 100 100 var3 rnorm 10000 100 100 var4 rnorm
  • Crystal 报表中的动态列

    我需要创建动态报告 如果在数据库中添加列 则该列应该自动反映在水晶报告中 我想知道水晶报告中是否可以使用动态列 如果是的话 如何实现 据我所知 通过在数据库中添加一列 您无法通过数据表在水晶报告上获取它 但您可以通过存储过程获取它 但您必须
  • `int` 是原子类型吗?

    Quoting gnu https www gnu org software libc manual html node Atomic Types html 实际上 您可以假设 int 是原子的 您还可以假设指针类型是原子的 非常方便 这两
  • 如何将 python 集合转换为 numpy 数组?

    我在 python 中使用集合操作来执行两个 numpy 数组之间的对称差异 然而 结果是一个集合 我需要将其转换回 numpy 数组才能继续 有没有办法做到这一点 这是我尝试过的 a numpy array 1 2 3 4 5 6 b n
  • .NET 中的 BODMAS 原理

    今天我发现 NET 框架在进行计算时遵循 BODMAS 操作顺序 即按以下顺序进行计算 Brackets Orders Division 乘法 Addition 减法 但是我四处搜索 找不到任何文档来证实 NET确实遵循这个原则 哪里有这样