iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0
Software Development

C#世界初探險系列 第 6

2022鐵人賽 Day 06 運算子精靈

  • 分享至 

  • xImage
  •  

嗨嗨~
今天登場的就是運算子精靈啦~
運算子精靈可是大家族呢!
算術運算子關係運算子邏輯運算子位元運算子移位運算子複合指定運算子遞增遞減運算子

  1. 算術運算子

    運算子符號 運算子 運算式 若j = 20 k = 3 下列i結果

    + | 相加 | i = j + k | i = 23 |
    - | 相減 | i = j - k | i = 17 |
    * | 相乘 | i = j * k | i = 60 |
    / | 相除 | i = j / k | i = 6 |
    % | 取餘數 | i = j % k | i = 2 |

    範例:

            int i, j = 20, k = 3;
            Console.WriteLine(i = j + k);
            Console.WriteLine(i = j - k);
            Console.WriteLine(i = j * k);
            Console.WriteLine(i = j / k);
            Console.WriteLine(i = j % k);
    

    結果:

    算術運算子

  2. 關係運算子

    關係運算子 意義 數學式 關係運算式

    == | 等於 | = | A==B |
    != | 不等於 | ≠ | A!=B |
    > | 大於 | > | A>B |
    < | 小於 | < | A<B |
    >= | 大於或等於 | ≥ | A>=B |
    <= | 小於或等於 | ≤ | A<=B |
    範例:

            bool Boolean = false;
            int A = 10, B = 10;
            Boolean = A == B;
            Console.WriteLine("A=B -> " + Boolean);
            Boolean = A != B;
            Console.WriteLine("A≠B -> " + Boolean);
            Boolean = A > B;
            Console.WriteLine("A>B -> " + Boolean);
            Boolean = A < B;
            Console.WriteLine("A<B -> " + Boolean);
            Boolean = A >= B;
            Console.WriteLine("A>=B -> " + Boolean);
            Boolean = A <= B;
            Console.WriteLine("A<=B -> " + Boolean);
    

    關係運算子

  3. 邏輯運算子

    邏輯運算子 意義 邏輯運算式 用法

    && | 且(AND) | A&&B | 當A跟B都為true時,結果才為true |
    || | 或(OR) | A||B | 若A、B其中一個為true,結果為true |
    ! | 非(NOT反相) | !A | 若A為true,結果為false。若A為false,結果為true。 |
    範例:

            bool Boolean = false, A = true, B = false;
            Console.WriteLine("A= " + A + " B= " + B);
            Boolean = A && B;
            Console.WriteLine("A&&B -> " + Boolean);
            Boolean = A || B;
            Console.WriteLine("A||B -> " + Boolean);
            Boolean = !A;
            Console.WriteLine("!A -> " + Boolean);
    

    邏輯運算子

  4. 位元運算子
    &(AND)、|(OR)、^(XOR)、~(NOT)為位元運算子,運算方式如下:

    A B A&B A|B A^B ~A

    0 0 | 0 | 0 | 0 | 1 |
    0 1 | 0 | 1 | 1 | 1 |
    1 0 | 0 | 1 | 1 | 0 |
    1 1 | 1 | 1 | 0 | 0 |

  5. 移位運算子
    移位運算子可用來做數值運算,做法是先將指定的運算元轉成二進位,接著使用">>"或"<<"來進行右移或左移幾個位元。

    1. 20~10~>>1 -> 00010100~2~>>1 -> 00001010~2~ = 10~10~
    2. 20~10~<<1 -> 00010100~2~<<1 -> 00101000~2~ = 40~10~
  6. 複合指定運算子

    運算子符號 意義 實例

    = | 指定 | i = 10 |
    += | 相加後再指定 | i += 5 |
    -= | 相減後再指定 | i -= 5 |
    = | 相乘後再指定 | i= 2 |
    /= | 相除後再指定 | i /= 2 |
    %= | 取餘數後再指定 | i %= 3 |
    ^= | 做位元的XOR運算再指定 | i ^= 5 |
    &= | 做位元的AND運算再指定 | i &= 5 |
    |= | 做位元的OR運算再指定 | i |= 5 |
    <<= | 左移指定運算 | i <<= 5 |
    >>= | 右移指定運算 | i >>= 5 |

  7. 遞增遞減運算子
    ++遞增和--遞減兩者都是屬於單元運算子,如i = i + 1可寫成i++i = i - 1可寫成i--。若將遞增/遞減運算子放在變數前表示前遞增/遞減,放之後則表示後遞增/遞減。

    1.      int i = 5, k;
           k = i++; //結果K=5,i=6。相當於先執行k=i,再執行i++
           Console.WriteLine("k=" + k);
           Console.WriteLine("i=" + i);
      
      後遞增
    2.      int i = 5, k;
           k = ++i; //結果K=6,i=6。相當於先執行i++,再執行k=i
           Console.WriteLine("k=" + k);
           Console.WriteLine("i=" + i);
      
      前遞增
    3.      int i, j, k;
           i = j = 15; //先將15指定給j,再將j值指定給i,i和j都是15
           Console.WriteLine("i=" + i + " j=" + j);
           k = ++i * 5; //先將i+1=16,再將i*5=80,最後指定給K
           Console.WriteLine("i=" + i + " k=" + k);
           j = k++ * 2; //先將K(=80)*2指定給j,j=160,再將k+1=81
           Console.WriteLine("k=" + k + " j=" + j);
      
      綜合練習

運算子精靈的家族就介紹到這裡啦,既然是家族,那就代表會有老幼順序(優先順序),下表是運算子的優先順序,要特別注意喔~

優先次序 運算子 運算次序
1 x.y、f(x)、a[x]、x++、x--、new、、() 由內至外
2 !、~、(cast)、+(正)、-(負)、++x、--x 由內至外
3 *、/、% 由左至右
4 +(加)、-(減) 由左至右
5 >>、<< 由左至右
6 <、<=、>、>= 由左至右
7 ==、!= 由左至右
8 &(邏輯AND) 由左至右
9 ^(邏輯XOR) 由左至右
10 |(邏輯OR) 由左至右
11 &&(條件AND) 由左至右
12 ||(條件OR) 由左至右
13 ?: 由右至左
14 =、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、!= 由右至左
15 ,(逗號) 由左至右

參考資料:
Visual C# 2015 程式設計經典


上一篇
2022鐵人賽 Day 05 資料型態家族
下一篇
2022鐵人賽 Day 07 輸入跟格式化輸出控制
系列文
C#世界初探險30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言