为什么*=在+之后解析

本文关键字:之后 为什么 | 更新日期: 2023-09-27 18:06:11

是否存在以下算法不等于的情况?

int var1 = 2;
int var2 = 5;
int var3 = 7;
// Scenario 1
var1 *= var2 + var3; // <-- 24
// Scenario 2
var1 = 2;
var1 *= (var2 + var3); // <-- 24

我问的原因是因为msdn站点声明如下:

这些操作符的优先级高于下一节,低于前一节。

然而,从我的测试,似乎从来没有这种情况?而且,即使没有括号,它似乎也会像有括号一样解析。

我认为算法应该等于:

// Scenario 1
var1 = var1 * var2 + var3; // <-- 17
//Scenario 2
var1 = var1 * (var2 + var3); // <-- 24


那么msdn网站是什么意思,在什么情况下他们的陈述是正确的呢?

c# test:

https://dotnetfiddle.net/Yt5ZBO

为什么*=在+之后解析

那么msdn站点是什么意思,在什么情况下它们的陈述为真?

它的意思正是它所说明的:section的优先级由高到低排序。

在它们的列表中,*=运算符(它是单个运算符,其优先级与=*的优先级无关)的优先级低于二进制+运算符。

首先计算+

这些操作符的优先级高于下一节(+,-,*,/)

你已经添加了(+, -, *, /)到这个引用(不正确),它实际上说的是:

这些操作符的优先级高于下一节,低于前一节。

+位于前面的部分中,因此具有更高的优先级。

相关文章: