# 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 = x + 1
* `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]=
}
## 六.轉義序列
**轉義序列表示的控制字元**
| 轉義序列 | 控制字元 |
| -------- | -------- |
|\n | 換行 |
|\t | 水平跳格 |
|\v | 垂直跳格 |
|\b | 後退一格 |
|\r | 歸位 |
|\f | 跳頁 |
|\a | 發出嗶聲 |
**轉義序列表示的"問題"字元(無法直接顯示)**
| 轉義序列 | 字元 |
| -------- | -------- |
|\\ | 顯示倒斜線 |
|\' | 顯示單引號 |
|\" | 顯示雙引號 |