# C++ 程式語言學習筆記 ## 一.變數型態 | 常用型態 | 意義 | 範圍 | |:------------- |:------------------ |:----------------------:| | int | 整數 | -2147483648~2147483647 | | long long int | 長整數 | -263 ~ 263-1 | | float | 單精度浮點數(小數) | ±1.5x10−45 ~ ±3.4x1038 | | double | 雙精度浮點數(小數) |±5.0×10−324 ~ ±1.7×10308 | | char | 字元 | ‘A’ | | string | 字串 | “Hello” | | bool | 布林 | true、false | ## 二.運算符 * 1.***關係運算子:*** | 關係運算子 | 意義 | 備註 | | -------- | -------- | -------- | | == | 等於 | =是指派,==是判斷是否相等 | | != | 不等於 | | > | 大於 | | >= | 大於等於 | | < | 小於 | | <= | 小於等於 | --- * 2.***邏輯運算子*** | 邏輯運算子 | 意義 | | -------- | -------- | | && | and | | II | or | |! | not | --- * 3.***賦值運算符*** * `x + = 4;` * 等於x = x + 4 * `x ++;` 前序 * `x = 5;` `y = ++ x;` * x為6,y為6 後序 * `x = 5;` `y = x ++;` * x為6,y為5 ## 三.條件式 * ***if/else*** * `if(7 > 4) { cout << "Yes"; }` * 條件為真,執行大括號中的語句。 * `if(7 < 4) { cout << "Yes"; }` * 條件為假,大括號中的語句將不執行,**不會打印任何內容。** ```clike= int mark = 90; if (mark < 50) { cout << "You failed." << endl; } else { cout << "You passed." << endl; } ``` -如果結果為真,則將執行if語句中的代碼。 -如果結果為假,==則將**執行else語句**中的代碼。== ```clike= int mark = 100; if (mark >= 50) { cout << "You passed." << endl; if (mark == 100) { cout <<"Perfect!" << endl; } } else { cout << "You failed." << endl; } ``` -可以在一個if語句中包含無限多組**嵌套if**語句。 # 四.迴圈 * 1.***while迴圈*** * 滿足特定條件時重複執行一組語句。直到條件變為**假**時, ==程序移至**緊隨循環**的那一行。== ```clike= int num=0; while(num < 10){ cout<< num <<endl; num++; }//重複迴圈到條件為假(a>10,迴圈重複十次) ``` --- * 2.***for循環*** * 條件評估,如果條件為**真**,則執行循環主體。 接下來遞增語句將**更新循環**。 然後,循環的主體**重複自身**,==僅在條件變為**假**時才停止。== ```clike= for(int num=0;num < 10;num++){ cout<< num <<endl; }//重複迴圈到條件為假(a>10,迴圈重複十次) ``` --- * 3.***do...while循環*** * 與for和while循環不同,for和while循環在**循環的頂部**測試循環條件,而do ... while循環在**循環的底部**檢查其條件。 ==如果條件評估為**假**,則do中的語句**仍運行一次**。== ```clike= int num=0; do{ cout<< "Number:" << num <<endl; num++; }while(num<10);//重複迴圈到條件為假(a>10,迴圈重複十次) ``` --- * 4.***switch聲明*** * **switch**語句測試一個變量對值,以確定它是否等於任何值。 Switch對變數求值以確定它是否等於case語句中的值。 如果找到匹配的值,則執行語句。 ```c++= int age=18 switch(age) { case 16: cout << "you can drive a car" << endl; break; case 18: cout << "buy a lottery ticket" << endl; break; case 21: cout << "buy some beer" << endl; break; default: cout<< "This is the default case."endl; //在Switchg聲明中,endl可以省略 //作為switch語句的最後一種情況,default不需要break語句。 } ``` -**default**語句的作用是終止**switch**語句。 -在變量等於**case**語句中的值的情況下,此語句之後的語句將繼續執行,直到遇到**break**語句為止。換句話說,即使不使用**break**語句,所有語句也會執行,==**即使那些與表達式不匹配的語句也是如此。**== 所有其他語句陳述被打印出來。這種類型的行為稱為***fall-through*** # 五.陣列 * ***陣列宣告*** * 陣列是一個 ==**用來存儲數據的集合**==,但一個陣列只能儲存一種類型的變量。聲明一個迴圈來存儲所有值,而不是聲明多個變量並存儲單個值。==~*聲明迴圈時,請指定其元素類型,以及要容納的元素數量。~== ```clike= int arr[5];//變量arr被聲明為五個整數值的迴圈,元素數量在方括號中指定 int arr[5]={1,2,3,4,5};//通過指定迴圈包含的值來對其進行初始化 ``` -大括號{}之間的值的數量不得超過方括號[]中聲明的元素的數量。 ```clike= int arr[5]={1,2,3,4,5}; cout<<arr[3]<<endl;//輸出4 ``` -迴圈中的每個元素或成員都有一個索引,可以精確定位元素的特定位置。 迴圈的 ==**第一個成員的索引為0**==,第二個成員的索引為1,以此類推 ```clike= int arr[]={1,2,3,4,5,6};如果省略迴圈的大小,則會創建一個大小足以容納初始化的迴圈 ``` -如果省略迴圈的大小,則會創建一個大小足以容納初始化的迴圈 ```clike= int arr[5]={1,2,3,4,5}; arr[3]=42;//迴圈的第三個元素賦值42。 ``` -索引號也可用於為元素分配新值。 * ***循環陣列*** 聲明一個數組存儲5個整數,並用來為每個元素分配一個值 ``` c++= int myarr[5]; for(int x= 0; x < 5; x++ ){ myarr[x]= } ``` * ***多維陣列*** * 指一個陣列可以容納一個到多個陣列(無限多組,==**三維以上很難管理**==) * 例如: ```c++= int x [3][4]//可以創建出3行4列的陣列 int y [2][3][2] = {{{1,2},{3,4},{5,6}},{{7,8},{9,10},{11,12}}} //三維陣列 ``` * ***指針*** * 每一個變量都會有一個