为什么*=在+之后解析
本文关键字:之后 为什么 | 更新日期: 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的优先级由高到低排序。
在它们的列表中,*=
运算符(它是单个运算符,其优先级与=
或*
的优先级无关)的优先级低于二进制+
运算符。
首先计算+
这些操作符的优先级高于下一节(+,-,*,/)
你已经添加了(+, -, *, /)
到这个引用(不正确),它实际上说的是:
这些操作符的优先级高于下一节,低于前一节。
+
位于前面的部分中,因此具有更高的优先级。