Function 为什么数学函数中的空合并运算符(?)在没有括号的情况下工作不同?

Function 为什么数学函数中的空合并运算符(?)在没有括号的情况下工作不同?,function,c#-3.0,null-coalescing-operator,Function,C# 3.0,Null Coalescing Operator,你好,我对C#中的这个数学函数有疑问,我想知道为什么会发生这种情况。 这两行给出了不同的结果,为什么 container.price * (1 + (container.tax_rate / 100m)) * (1 - (container.promotion_rate ?? 0 / 100m)) 返回->-839.9944 container.price * (1 + (container.tax_rate / 100m)) * (1 - ((container.promotion_rate

你好,我对C#中的这个数学函数有疑问,我想知道为什么会发生这种情况。 这两行给出了不同的结果,为什么

container.price * (1 + (container.tax_rate / 100m)) * (1 - (container.promotion_rate ?? 0 / 100m))
返回->-839.9944

container.price * (1 + (container.tax_rate / 100m)) * (1 - ((container.promotion_rate ?? 0) / 100m))
返回->50.99966


函数中唯一的区别是第二个函数的括号:
(container.promotion\u rate??0)
/
的优先级高于
??


您的第一个表达式被解析为
container.promotion\u rate??(0/100m)

空合并运算符的优先级低于除法运算符。因此,您的代码被解释为

 container.promotion_rate ?? (0 / 100m)
这会给你一个不同的结果