static void Main(string[] args)
{
int firstNumber = 0;
bool simpleLogicResult = true & false & (firstNumber++ > 0);
Console.WriteLine($"firstNumber = {firstNumber}");
int secondNumber = 0;
bool shortCircuitResult = true && false && (secondNumber++ > 0);
Console.WriteLine($"secondNumber = {secondNumber}");
// Delay
Console.ReadKey();
Сверху пример кода.
Первый случай возвращает 1.
Второй 0.
Ей богу, ума не приложу, почему в 1 случае выходит именно 1. По идее же, должен быть 0, так как false присутствует УЖЕ на этапе сравнения.
И получается, что 1*0*0 должно выйти 0.
А выходит 1...