【DotNet 技能系列】6. C#中邏輯運算符與優先級


邏輯運算符: &&, ||, !

邏輯表達式:條件表達式1 &&(||) 條件表達式2

&& 運算規則:只有條件表達式1,2都為True時結果才為True

|| 運算規則:只要一個條件表達式為True,結果為True

!運算規則:條件表達式的值為True時,結果為False,值為False是,結果為True

 

算術運算符、關系運算符、邏輯運算符優先級

A !為單目運算符,優先級比算術運算符、關系運算符高

B. 算術運算符號的優先級比關系、邏輯運算符優先級高

C  邏輯運算符&& 和||的優先級要比關系運算符低!(通常表達式1和表達式2就是關系運算符,所有先進行關系運算,然后進行邏輯運算)

 

按元划分運算優先級:括號優先級> 一元運算符號優先級>二元運算符號優先級>三元運算符號優先級

// 括號的不同寫法
int result = (3+4) * 5;
int result2 = (int) 3.14 + 4; //7, 與double result3 = 3.14 + 4 結果為7.14不同是因為括號的優先級!

按運算符類型划分:括號優先級> 算術運算符> 關系運算符> 邏輯運算符

 

注意:運算符優先級大於賦值運算符

 

典雅小築吧:C#運算符優先級表(http://tieba.baidu.com/f?kz=869790562#

 

與或的短路問題

與短路:當第一個表達式的值為False時候,第二個表達式不會運行

或短路:當第一個表達式的值為True時候,第二個表達式不會運行。

與或短路的結果,如果表達式中存在變量賦值運算,那么就不會執行運算而得不到想要的結果!

// 與或的短路問題
            int num1 = 10;
            int num2 = 5;
            bool result = ++num1 == 10 && ++num2 > 1; // 與短路,第一個False后面就不會參加運算
            Console.WriteLine("num1 = {0}, num2 = {1}", num1, num2); // num1  = 11, num2 = 5

            bool result2 = ++num1 != 5 || ++num2 > 1; // 或短路,第一個True后面就不會參加運算
            Console.WriteLine("num1 = {0}, num2 = {1}", num1, num2); // num1 = 12, num2 = 5


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM