iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0

大家早安,究竟行前特訓會到何時呢?
今天要先來說說關鍵字,不知道大家對他還熟不熟悉?
首先我們要先認識識別字
識別字(Identifier)是用來對城市中的一個方法、變數或其他使用者定義的項目給予名稱以便在程式中識別。但有其規則:

  1. Identifier必須以A-Z,a-z或_(底線)等字元開頭,但不允許以數字0-9開頭。
  2. C#的Identifier將字母的大小寫視為不同字元,如:ABC、Abc、abc是為三個不同的名稱
  3. Identifier命名最好具有意義、名稱最好和資料有關連。
  4. C#允許中文字當變數名稱,由於使用中文字當變數在程式中易造成混淆,建議不要使用。
  5. C#的關鍵字(Keywords)是不允許用來當作識別字的。下表為C#常用的Keywords。若非要使用Keywords當Identifier不可時,可在該Identifier前面加上@便可當作Identifier使用
    | | | | |
    -------- | -------- | ---------- | --------- | --------- |
    abstract | as | base | bool | break |
    byte | case | catch | char | checked |
    class | const | continue | decimal | default |
    delegate | do | double | else | enum |
    event | explicit | extern | false | finally |
    fixed | float | for | foreach | goto |
    if | implicit | in | int | interface |
    internal | is | lock | long | namespace |
    new | null | object | operator | out |
    override | params | private | protected | public |
    readonly | ref | return | sbyte | sealed |
    short | sizeof | stackalloc | static | string |
    struct | switch | this | throw | true |
    try | typeof | uint | ulong | unchecked |
    unsafe | ushort | using | virtual | volatile |
    void | while |
  6. 下列是不正確的命名方式
    good luck //中間不能空格
    7_eleven  //第一個字不能數字
    B&Q       //&不是可使用的字元
    new       //new是關鍵字
    

再來是資料型別

資料型別 .NET Framework 說明
bool(布林) System.Boolean 佔1-Byte布林值,其值為true或false
Byte System.Byte 佔1-Byte,無正負整數。範圍:0~255
sbyte System.Sbyte 佔1-Byte,有正負符號整數。範圍:-128~127
short(短整數) System.Int16 佔2-Byte,有正負符號整數。範圍:-32768~32767
ushort(無號短整數) System.Uint16 佔2-Byte,無正負整數。範圍:0~65535
int(整數) System.Int32 佔4-Byte,有正負符號整數。範圍:-2147483648~2147483647
uint(無號整數) System.Uint32 佔4-Byte,無正負整數。範圍:0~4294967295
long(長整數) System.Int64 佔8-Byte,有正負符號整數。範圍:-9223372036854775808~9223372036854775807
ulong(無號長整數) System.Uint64 佔8-Byte,無正負整數。範圍:0~18446744073709551615
float(浮點數) System.Single 佔4-Byte,單精確度浮點數。範圍:1.5x10^-28^~3.4x10^37^。精確度7個數字
double(倍精確浮點數) System.Double 佔8-Byte,倍精確度浮點數。範圍:5x10^-324^~1.7x10^308^。精確度15-16個數字
decimal(貨幣) System.Decimal 佔16-Byte為十進位數字,有效位數28,範圍:1x10^-28^~7.9x10^28^
char(字元) System.Char 佔2-Byte,其值是一個Unicode的字元,該字元以單引號括住。範圍:0~65535
string(字串) System.String 字串型別,資料頭尾以雙引號括住
object(物件) System.Object 物件型別,可以存放任意資料型別的資料

最後最後就是我們的運算子

運算子精靈可是大家族呢!
算術運算子關係運算子邏輯運算子位元運算子移位運算子複合指定運算子遞增遞減運算子

  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 ,(逗號) 由左至右

今天就先這樣吧~明天開始教大家攻擊技巧跟招式!
大家好好休息吧!

tags: 2023鐵人賽

上一篇
2023鐵人賽 Day 02 C#深入行前訓練-1
下一篇
2023鐵人賽 Day 04 C#深入行前訓練-3
系列文
C#世界深入探險,走走不同副本之路-Windows Form30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言