• Почему логическое "И" & в C# возвращает 1?

    @Iv_and_S
    "&" - это синтаксис - "полные вычисления".
    вычисляются ВСЕ операнды. а значит firstNumber++ отработает.

    "&&" - это синтаксис - "сокращенные вычисления".
    до оперенда , secondNumber++ вычисление просто не дойдет, т.к. в этом нет смысла. оно уже false.

    p.s. вместо "ума не приложу"- внимательно, в любой книге, раздел "условные выражения".
    Ответ написан
    Комментировать
  • Почему логическое "И" & в C# возвращает 1?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    0 возвращает не &.

    & - жадный оператор. И левый, и правый операнд будут вычислены.
    && - ленивый. Если значение левого операнда false, то второй операнд даже не будет вычисляться.

    Получается, что в первом случае выражение вычисляется полностью:
    true & false & false -> false
    Выражение firstNumber++ > 0 имеет значение false, тк это пост-инкремент.
    В результате значение firstNumber=1 тк инкремент был вызван.

    Во втором случае инкремент не будет вызван, тк значение выражение будет очевидно в самом начале:
    (true && false)&& ... -> false
    Тк инкремент не вызван, secondNumber=0
    Ответ написан
    Комментировать