Home [C# 筆記] 運算式優先級
Post
Cancel

[C# 筆記] 運算式優先級

運算式優先級

  • 優先級不是先計算,而是優先結合為整體
  • 從左到右計算
  • 在一個運算式中,如果存在括號,則優先計算括號中的運算式

舉例1: c = a + b+ ++b

1
2
int a=1, b=2;
int c = a + b+ ++b; //output: 6

輸出為6

1
2
3
a+b=3
++b=3(b己經變成3)
3+3=6

舉例2: c = ++b + a + b

1
2
int a=1, b=2;
int c = ++b + a + b; //output: 7

輸出為7
為什麼呢?

1
2
++b=3(b己經變成3)
3+1+3=7

前++ 後++ ?

++a
先把a加上1,再把a放入運算式中。
a++
先把a放到運算式中,再把a加上1。

關係/邏輯運算符優先級

1
! > 算術運算符 > 關係運算符 > && > || > 賦值運算符

!取反運算符

舉例:

1
2
3
int a=10, b=5;
bool c = false;
bool res = a >= 2 * b && !c; //output: true

輸出為true
為什麼呢?

1
2
3
4
!c = true (!取反運算符優先)
2 x 5 =10 (算術運算符 2xb)
10 >= 10 => true (關係運算符 a>=10)
true && true => true (true && !c)

csharp/language-reference/operators/

This post is licensed under CC BY 4.0 by the author.