c# - if 条件中果有多个&& 或 || 条件,其执行顺序是怎样的?

时间:2023-01-04 22:19:43

首先,为了避免歧义,特此说明:我们不是讨论&&优先于||执行,我们讨论如果一个If中有多个&&;或一个if中有多个||;他们的执行顺序是什么。

答案是:从左至右;

1. 对于&&,如果遇到一个false,则停止其它条件的判断,返回false。

2. 对于||, 如果遇到一个true,则停止其它条件的判断,返回true。

示例:

        static void Main(string[] args)
        {
            int a = 0;

            // OK, a > 0 返回false,停止其他条件的判断返回false
            if (a > 0 && 5 / a >= 1)
            {
                Console.WriteLine("&& 从左至右执行1");
            }

            // Not OK, 5 / a >= 1 抛出DivideByZeroException,程序终止。
            if (5 / a >= 1 && a > 0)
            {
                Console.WriteLine("&& 从左至右执行2");
            }

            // OK, a >= 0 返回true,停止其它条件的判断返回true。
            if (a >= 0 || 5 / a >= 1)
            {
                Console.WriteLine("|| 从左至右执行1");
            }

            // Not OK, 5 / a >= 1 抛出DivideByZeroException,程序终止。
            if (5 / a >= 1 || a >= 0)
            {
                Console.WriteLine("|| 从左至右执行2");
            }
        }