You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中Math.Pow((11/3),2)为何先执行除法而非指数运算?

C#运算顺序疑问解答

核心原因

你混淆了括号优先级规则、方法调用执行逻辑和算术运算符优先级规则的适用场景,具体说明如下:

  • C#运算优先级的最高层级为括号包裹的表达式,任何被()包裹的内容都会优先完成求值,再参与外层运算,这是优先级的基础约定。
  • 方法调用的默认执行逻辑为:先对所有入参的表达式逐一完成求值,再将结果传入方法执行内部逻辑,因此Math.Pow((11/3),2)天然会先计算两个入参的值,再执行指数运算。
  • 你提到的「指数运算优先级高于除法」仅适用于同一层级、无括号包裹的算术运算符场景,比如表达式11 / Math.Pow(3,2)就会先执行指数运算,再执行除法。
  • 补充细节:C#中两个int类型值执行除法时默认走整数除法,11/3的求值结果为3,因此你运行代码最终得到的是Math.Pow(3,2)的返回值9。

对应场景写法参考

如果需要实现「指数优先于除法」的运算逻辑,对应两种常见需求的写法如下:

  • 计算11的平方除以3:Console.WriteLine(Math.Pow(11, 2) / 3);
  • 计算11除以3的平方:Console.WriteLine(11 / Math.Pow(3, 2));

内容的提问来源于stack exchange,提问作者Nicholas Spektor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:15:08