1. 程式人生 > >2018年11月13日學習日誌

2018年11月13日學習日誌


一. 關於運算子;
1. 算術運算子;
運算子 描述 例項
+ 把兩個運算元相加 A + B 將得到 30
- 從第一個運算元中減去第二個運算元 A - B 將得到 -10
* 把兩個運算元相乘 A * B 將得到 200
/ 分子除以分母 B / A 將得到 2
% 取模運算子,整除後的餘數 B % A 將得到 0
++ 自增運算子,整數值增加 1 A++ 將得到 11
-- 自減運算子,整數值減少 1 A-- 將得到 9

2. 關係運算符;
運算子 描述 例項
== 檢查兩個運算元的值是否相等,如果相等則條件為真。 (A == B) 不為真。
!= 檢查兩個運算元的值是否相等,如果不相等則條件為真。 (A != B) 為真。
> 檢查左運算元的值是否大於右運算元的值,如果是則條件為真。 (A > B) 不為真。
< 檢查左運算元的值是否小於右運算元的值,如果是則條件為真。 (A < B) 為真。
>= 檢查左運算元的值是否大於或等於右運算元的值,如果是則條件為真。 (A >= B) 不為真。
<= 檢查左運算元的值是否小於或等於右運算元的值,如果是則條件為真。 (A <= B) 為真。

3. 邏輯運算子;
運算子 描述 例項
&& 稱為邏輯與運算子。如果兩個運算元都非零,則條件為真。 (A && B) 為假。
|| 稱為邏輯或運算子。如果兩個運算元中有任意一個非零,則條件為真。 (A || B) 為真。
! 稱為邏輯非運算子。用來逆轉運算元的邏輯狀態。如果條件為真則邏輯非運算子將使其為假。 !(A && B) 為真。

4. 賦值運算子;
運算子 描述 例項
= 簡單的賦值運算子,把右邊運算元的值賦給左邊運算元 C = A + B 將把 A + B 的值賦給 C
+= 加且賦值運算子,把右邊運算元加上左邊運算元的結果賦值給左邊運算元 C += A 相當於 C = C + A
-= 減且賦值運算子,把左邊運算元減去右邊運算元的結果賦值給左邊運算元 C -= A 相當於 C = C - A
*= 乘且賦值運算子,把右邊運算元乘以左邊運算元的結果賦值給左邊運算元 C *= A 相當於 C = C * A
/= 除且賦值運算子,把左邊運算元除以右邊運算元的結果賦值給左邊運算元 C /= A 相當於 C = C / A
%= 求模且賦值運算子,求兩個運算元的模賦值給左邊運算元 C %= A 相當於 C = C % A
<<= 左移且賦值運算子 C <<= 2 等同於 C = C << 2
>>= 右移且賦值運算子 C >>= 2 等同於 C = C >> 2
&= 按位與且賦值運算子 C &= 2 等同於 C = C & 2
^= 按位異或且賦值運算子 C ^= 2 等同於 C = C ^ 2
|= 按位或且賦值運算子 C |= 2 等同於 C = C | 2

5. 位運算子;
運算子 描述 例項
& 如果同時存在於兩個運算元中,二進位制 AND 運算子複製一位到結果中。 (A & B) 將得到 12,即為 0000 1100
| 如果存在於任一運算元中,二進位制 OR 運算子複製一位到結果中。 (A | B) 將得到 61,即為 0011 1101
^ 如果存在於其中一個運算元中但不同時存在於兩個運算元中,二進位制異或運算子複製一位到結果中。 (A ^ B) 將得到 49,即為 0011 0001
~ 按位取反運算子是一元運算子,具有"翻轉"位效果,即0變成1,1變成0,包括符號位。 (~A ) 將得到 -61,即為 1100 0011,一個有符號二進位制數的補碼形式。
<< 二進位制左移運算子。左運算元的值向左移動右運算元指定的位數。 A << 2 將得到 240,即為 1111 0000
>> 二進位制右移運算子。左運算元的值向右移動右運算元指定的位數。 A >> 2 將得到 15,即為 0000 1111

6. 其他運算子;
運算子 描述 例項
sizeof() 返回資料型別的大小。 sizeof(int),將返回 4.
typeof() 返回 class 的型別。 typeof(StreamReader);
& 返回變數的地址。 &a; 將得到變數的實際地址。
* 變數的指標。 *a; 將指向一個變數。
? : 條件表示式 如果條件為真 ? 則為 X : 否則為 Y
is 判斷物件是否為某一型別。 If( Ford is Car) // 檢查 Ford 是否是 Car 類的一個物件。
as 強制轉換,即使轉換失敗也不會丟擲異常。 Object obj = new StringReader("Hello");
   StringReader r = obj as StringReader;


7. 運算子的優先順序:
類別  運算子  結合性
字尾  () [] -> . ++ - -   從左到右
一元  + - ! ~ ++ - - (type)* & sizeof  從右到左
乘除  * / %  從左到右
加減  + -  從左到右
移位  << >>  從左到右
關係  < <= > >=  從左到右
相等  == !=  從左到右
位與 AND  &  從左到右
位異或 XOR  ^  從左到右
位或 OR  |  從左到右
邏輯與 AND  &&  從左到右
邏輯或 OR  ||  從左到右
條件  ?:  從右到左
賦值  = += -= *= /= %=>>= <<= &= ^= |=  從右到左
逗號  ,  從左到右

8. 三元運算子:表示式?值1:值2 
當表示式為真,返回值1  ,當表示式為假,返回值2
  //獲取第一個字母的值;
            Console.WriteLine("請問今天下雨了嗎?");
            int a =  int.Parse(Console.ReadLine());

            int b = 1;


            string c = a == b ? "下雨了" : "沒有下雨";
            Console.WriteLine(c);
            Console.ReadLine();


二. 關於if else  語句的應用:
作為流程控制語句的一種,if eles語句有多種表現形式,常見的包括下列三種;
1. If()  {};
2. If() {}else{};
3. If() {} esleif{} ;
4. If() {} else if{} else{};
5. If巢狀;

雖然表現形式多種多樣,但是if語句的核心在於做出判斷,進行流程控制;

//if (a == b )
            //{
            //    Console.WriteLine("你的判斷是對的");
            //    Console.ReadLine();

            //}
            //else
            //{

            //    Console.WriteLine("你的判斷是錯的");
            //    Console.ReadLine();
            //}


三. 關於switch 語句的應用
Switch語句和if語句的功能類似,都是用來進行流程控制的,不同的是switch語句的應用範圍要更小一些,但是效率更高;
語法:switch (表示式)
{
Case 值1:
語句;
Break;
Case 值2:
語句;
Break;
Case 值3:
語句;
Break;
Defaule :
語句;
Break;


}

程式碼例項:
Console.WriteLine("請輸入你的身高:");
            int shengao = int.Parse(Console.ReadLine());
            switch (shengao)
            {
                case 1:
                    Console.WriteLine("您的身材偏瘦1");
                    break;
                case 2:
                    Console.WriteLine("您的身材層號2");
                    break;
                case 3:
                    Console.WriteLine("您的身材偏瘦3");
                    break;
                case 4:
                    Console.WriteLine("您的身材偏瘦4");
                    break;
                case 5:
                    Console.WriteLine("您的身材偏瘦5");
                    break;
                default:
                    Console.WriteLine("您不瘦啦");
                    break;


            }
            Console.ReadLine();

四. 關於for迴圈的應用:
For迴圈和前面記錄的if或者switch語句類似,都是用來控制流程的,不同的是if或者switch是控制選擇的,而for語句是用來控制迴圈的,語句結構如下:
For(int I = 0 ; I < 次數值;i++){}

For迴圈經常使用內外巢狀的方式來實現二位形式的資料輸出;


for (int a = 1; a <= 9; a++)
            {
                for(int b = 1; b <= a; b ++ )
                {
                    Console.Write("*");

                }
                Console.WriteLine();

            }
            Console.ReadLine();

巢狀語句的精髓在於外層迴圈決定二維表格的行數,而內層迴圈決定二維表格的列數,或則叫個數,通過二者的數量來確定變數的關係,進而實現想要的效果;

五. 關於while迴圈的應用:
1. While迴圈的兩種表現形式:
While(迴圈條件){迴圈體}
do{迴圈體} while(迴圈條件)
二者的區別while是先判斷迴圈條件是否成立,成立執行迴圈體,do  while
是先執行一次迴圈體,然後再判斷迴圈條件,這樣就能達到一個效果,無論迴圈條件成立或者不成立,迴圈體都會被執行一次;

關於迴圈需要特別注意的是,可以在迴圈中使用break  和continue  語句;
Break語句的作用是跳出所在的一個迴圈(無論改迴圈應該被執行多少次,一下子跳出來,不再執行);
Continue語句的作用是跳出所在的一次迴圈(跳出本次迴圈的執行過程,其他次繼續執行);
    for (int a = 1; a <= 9; a++)
            {
                for(int b = 1; b <= 9-a; b ++ )
                {

                    continue;
                    Console.Write(" ");

                  
                }
                for (int b = 1; b <= a; b++)
                {
                    Console.Write("*");

                }
                Console.WriteLine();

            }
            Console.ReadLine();


for (int a = 1; a <= 9; a++)
            {
                for(int b = 1; b <= 9-a; b ++ )
                {

                    break ;
                    Console.Write(" ");

                  
                }
                for (int b = 1; b <= a; b++)
                {
                    Console.Write("*");

                }
                Console.WriteLine();

            }
            Console.ReadLine();
六.  關於程式除錯的應用:
1. 程式除錯的用途:發現並解決程式中的邏輯錯誤,檢視程式執行的業務邏輯;
2. 程式除錯的三步:
根據經驗和認知,在可能出現錯誤的位置新增斷點(選中行+f9  或者直接新增);
啟動除錯(f5),觀察變數值的變化和程式碼執行過程,進行分析;
解決問題;
3. 斷點除錯過程中:f11 表示逐行執行,f10表示逐過程執行