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

关于C#中布尔逻辑运算&与&&的疑问:为何firstNumber输出为1而非0?

C#中布尔&与&&运算的差异解析

核心差异:是否执行全部操作数

  • &(逻辑与运算符):会强制计算所有参与运算的表达式,哪怕前面的结果已经能确定最终布尔值。
    在你的代码里,true & false & (firstNumber++ > 0)中,尽管true & false已经得出false,但&仍会执行后面的firstNumber++,导致firstNumber从0自增为1。

  • &&(短路与运算符):会进行短路求值——只要前面的表达式能确定最终结果,就不会再计算后续表达式。
    代码里true && false已经得出false,所以后面的secondNumber++完全不会执行,secondNumber保持初始值0。

对应代码验证

static void Main(string[] args)
{
    int firstNumber = 0;
    bool simpleLogicResult = true & false & (firstNumber++ > 0); 
    Console.WriteLine($"firstNumber = {firstNumber}"); // 输出1,因执行了firstNumber++

    int secondNumber = 0;
    bool shortCircuitResult = true && false && (secondNumber++ > 0); 
    Console.WriteLine($"secondNumber = {secondNumber}"); // 输出0,因secondNumber++未执行

    Console.ReadKey();
}

场景总结

  • 若需要确保所有表达式的副作用(比如变量修改、方法调用)都被执行,用&;
  • 若想优化性能或避免不必要的副作用,优先用&&。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:08:09