1. 程式人生 > 實用技巧 >C++學習筆記 1

C++學習筆記 1

1.1 第一個C++程式

編寫一個C++程式總共分為4個步驟

  • 建立專案

  • 建立檔案

  • 編寫程式碼

  • 執行程式

1.1.1 建立專案

Visual Studio是我們用來編寫C++程式的主要工具,我們先將它開啟

1.1.2 建立檔案

右鍵原始檔,選擇新增->新建項

給C++檔案起個名稱,然後點選新增即可。

1.1.3 編寫程式碼

#include <iostream>
using namespace std;

int main() {

	cout << "Hello world" << endl;

	system("pause");

	return 0;
}

1.1.4 執行程式

1.2 註釋

作用:在程式碼中加一些說明和解釋,方便自己或其他程式設計師程式設計師閱讀程式碼

兩種格式

  1. 單行註釋// 描述資訊

    • 通常放在一行程式碼的上方,或者一條語句的末尾,==對該行程式碼說明==

  2. 多行註釋/* 描述資訊 */

    • 通常放在一段程式碼的上方,==對該段程式碼做整體說明==

提示:編譯器在編譯程式碼時,會忽略註釋的內容

1.3 變數

作用:給一段指定的記憶體空間起名,方便操作這段記憶體

語法資料型別 變數名 = 初始值;

示例:

#include<iostream>
using namespace std;

int main() {

	//變數的定義
	//語法:資料型別  變數名 = 初始值

	int a = 10;

	cout << "a = " << a << endl;
	
	system("pause");

	return 0;
}

注意:C++在建立變數時,必須給變數一個初始值,否則會報錯

1.4 常量

作用:用於記錄程式中不可更改的資料

C++定義常量兩種方式

  1. #define 巨集常量: #define 常量名 常量值

    • ==通常在檔案上方定義==,表示一個常量

  1. const修飾的變數 const 資料型別 常量名 = 常量值

    • ==通常在變數定義前加關鍵字const==,修飾該變數為常量,不可修改

示例:

//1、巨集常量
#define day 7

int main() {

	cout << "一週裡總共有 " << day << " 天" << endl;
	//day = 8;  //報錯,巨集常量不可以修改

	//2、const修飾變數
	const int month = 12;
	cout << "一年裡總共有 " << month << " 個月份" << endl;
	//month = 24; //報錯,常量是不可以修改的
	
	
	system("pause");

	return 0;
}

1.5 關鍵字

作用:關鍵字是C++中預先保留的單詞(識別符號)

  • 在定義變數或者常量時候,不要用關鍵字

C++關鍵字如下:

asmdoifreturntypedef
auto double inline short typeid
bool dynamic_cast int signed typename
break else long sizeof union
case enum mutable static unsigned
catch explicit namespace static_cast using
char export new struct virtual
class extern operator switch void
const false private template volatile
const_cast float protected this wchar_t
continue for public throw while
default friend register true
delete goto reinterpret_cast try

提示:在給變數或者常量起名稱時候,不要用C++得關鍵字,否則會產生歧義。

1.6 識別符號命名規則

作用:C++規定給識別符號(變數、常量)命名時,有一套自己的規則

  • 識別符號不能是關鍵字

  • 識別符號只能由字母、數字、下劃線組成

  • 第一個字元必須為字母或下劃線

  • 識別符號中字母區分大小

2 資料型別

C++規定在建立一個變數或者常量時,必須要指定出相應的資料型別,否則無法給變數分配記憶體

2.1 整型

作用:整型變量表示的是==整數型別==的資料

C++中能夠表示整型的型別有以下幾種方式,區別在於所佔記憶體空間不同

資料型別佔用空間取值範圍
short(短整型) 2位元組 (-2^15 ~ 2^15-1)
int(整型) 4位元組 (-2^31 ~ 2^31-1)
long(長整形) Windows為4位元組,Linux為4位元組(32位),8位元組(64位) (-2^31 ~ 2^31-1)
long long(長長整形) 8位元組 (-2^63 ~ 2^63-1)

2.2 sizeof關鍵字

作用:利用sizeof關鍵字可以==統計資料型別所佔記憶體大小==

語法: sizeof( 資料型別 / 變數)

示例:

int main() {

	cout << "short 型別所佔記憶體空間為: " << sizeof(short) << endl;

	cout << "int 型別所佔記憶體空間為: " << sizeof(int) << endl;

	cout << "long 型別所佔記憶體空間為: " << sizeof(long) << endl;

	cout << "long long 型別所佔記憶體空間為: " << sizeof(long long) << endl;

	system("pause");

	return 0;
}

2.3 實型(浮點型)

作用:用於==表示小數==

浮點型變數分為兩種:

  1. 單精度float

  2. 雙精度double

兩者的區別在於表示的有效數字範圍不同。

資料型別佔用空間有效數字範圍
float 4位元組 7位有效數字
double 8位元組 15~16位有效數字

示例:

int main() {

	float f1 = 3.14f;
	double d1 = 3.14;

	cout << f1 << endl;
	cout << d1<< endl;

	cout << "float  sizeof = " << sizeof(f1) << endl;
	cout << "double sizeof = " << sizeof(d1) << endl;

	//科學計數法
	float f2 = 3e2; // 3 * 10 ^ 2 
	cout << "f2 = " << f2 << endl;

	float f3 = 3e-2;  // 3 * 0.1 ^ 2
	cout << "f3 = " << f3 << endl;

	system("pause");

	return 0;
}

2.4 字元型

作用:字元型變數用於顯示單個字元

語法:char ch = 'a';

注意1:在顯示字元型變數時,用單引號將字元括起來,不要用雙引號

注意2:單引號內只能有一個字元,不可以是字串

  • C和C++中字元型變數只佔用==1個位元組==。

  • 字元型變數並不是把字元本身放到記憶體中儲存,而是將對應的ASCII編碼放入到儲存單元

示例:

int main() {
	
	char ch = 'a';
	cout << ch << endl;
	cout << sizeof(char) << endl;

	//ch = "abcde"; //錯誤,不可以用雙引號
	//ch = 'abcde'; //錯誤,單引號內只能引用一個字元

	cout << (int)ch << endl;  //檢視字元a對應的ASCII碼
	ch = 97; //可以直接用ASCII給字元型變數賦值
	cout << ch << endl;

	system("pause");

	return 0;
}

ASCII碼錶格:

ASCII控制字元ASCII字元ASCII字元ASCII字元
0 NUT 32 (space) 64 @ 96
1 SOH 33 ! 65 A 97 a
2 STX 34 " 66 B 98 b
3 ETX 35 # 67 C 99 c
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 , 71 G 103 g
8 BS 40 ( 72 H 104 h
9 HT 41 ) 73 I 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 K 107 k
12 FF 44 , 76 L 108 l
13 CR 45 - 77 M 109 m
14 SO 46 . 78 N 110 n
15 SI 47 / 79 O 111 o
16 DLE 48 0 80 P 112 p
17 DCI 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC4 52 4 84 T 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 TB 55 7 87 W 119 w
24 CAN 56 8 88 X 120 x
25 EM 57 9 89 Y 121 y
26 SUB 58 : 90 Z 122 z
27 ESC 59 ; 91 [ 123 {
28 FS 60 < 92 / 124 |
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 ^ 126 `
31 US 63 ? 95 _ 127 DEL

ASCII 碼大致由以下兩部分組成:

  • ASCII 非列印控制字元: ASCII 表上的數字 0-31 分配給了控制字元,用於控制像印表機等一些外圍裝置。

  • ASCII 列印字元:數字 32-126 分配給了能在鍵盤上找到的字元,當檢視或列印文件時就會出現。

2.5 轉義字元

作用:用於表示一些==不能顯示出來的ASCII字元==

現階段我們常用的轉義字元有:\n \\ \t

轉義字元含義ASCII碼值(十進位制)
\a 警報 007
\b 退格(BS) ,將當前位置移到前一列 008
\f 換頁(FF),將當前位置移到下頁開頭 012
\n 換行(LF) ,將當前位置移到下一行開頭 010
\r 回車(CR) ,將當前位置移到本行開頭 013
\t 水平製表(HT) (跳到下一個TAB位置) 009
\v 垂直製表(VT) 011
\\ 代表一個反斜線字元"" 092
' 代表一個單引號(撇號)字元 039
" 代表一個雙引號字元 034
\? 代表一個問號 063
\0 數字0 000
\ddd 8進位制轉義字元,d範圍0~7 3位8進位制
\xhh 16進位制轉義字元,h範圍0~9,a~f,A~F 3位16進位制

示例:

int main() {
	
	
	cout << "\\" << endl;
	cout << "\tHello" << endl;
	cout << "\n" << endl;

	system("pause");

	return 0;
}

2.6 字串型

作用:用於表示一串字元

兩種風格

  1. C風格字串char 變數名[] = "字串值"

    示例:

int main() {

	char str1[] = "hello world";
	cout << str1 << endl;
    
	system("pause");

	return 0;
}

注意:C風格的字串要用雙引號括起來

  1. C++風格字串string 變數名 = "字串值"

    示例:

int main() {

	string str = "hello world";
	cout << str << endl;
	
	system("pause");

	return 0;
}

注意:C++風格字串,需要加入標頭檔案==#include<string>==

2.7 布林型別 bool

作用:布林資料型別代表真或假的值

bool型別只有兩個值:

  • true --- 真(本質是1)

  • false --- 假(本質是0)

bool型別佔==1個位元組==大小

示例:

int main() {

	bool flag = true;
	cout << flag << endl; // 1

	flag = false;
	cout << flag << endl; // 0

	cout << "size of bool = " << sizeof(bool) << endl; //1
	
	system("pause");

	return 0;
}

2.8 資料的輸入

作用:用於從鍵盤獲取資料

關鍵字:cin

語法: cin >> 變數

示例:

int main(){

	//整型輸入
	int a = 0;
	cout << "請輸入整型變數:" << endl;
	cin >> a;
	cout << a << endl;

	//浮點型輸入
	double d = 0;
	cout << "請輸入浮點型變數:" << endl;
	cin >> d;
	cout << d << endl;

	//字元型輸入
	char ch = 0;
	cout << "請輸入字元型變數:" << endl;
	cin >> ch;
	cout << ch << endl;

	//字串型輸入
	string str;
	cout << "請輸入字串型變數:" << endl;
	cin >> str;
	cout << str << endl;

	//布林型別輸入
	bool flag = true;
	cout << "請輸入布林型變數:" << endl;
	cin >> flag;
	cout << flag << endl;
	system("pause");
	return EXIT_SUCCESS;
}

3 運算子

作用:用於執行程式碼的運算

本章我們主要講解以下幾類運算子:

運算子型別作用
算術運算子 用於處理四則運算
賦值運算子 用於將表示式的值賦給變數
比較運算子 用於表示式的比較,並返回一個真值或假值
邏輯運算子 用於根據表示式的值返回真值或假值

3.1 算術運算子

作用:用於處理四則運算

算術運算子包括以下符號:

運算子術語示例結果
+ 正號 +3 3
- 負號 -3 -3
+ 10 + 5 15
- 10 - 5 5
* 10 * 5 50
/ 10 / 5 2
% 取模(取餘) 10 % 3 1
++ 前置遞增 a=2; b=++a; a=3; b=3;
++ 後置遞增 a=2; b=a++; a=3; b=2;
-- 前置遞減 a=2; b=--a; a=1; b=1;
-- 後置遞減 a=2; b=a--; a=1; b=2;

示例1:

//加減乘除
int main() {

	int a1 = 10;
	int b1 = 3;

	cout << a1 + b1 << endl;
	cout << a1 - b1 << endl;
	cout << a1 * b1 << endl;
	cout << a1 / b1 << endl;  //兩個整數相除結果依然是整數

	int a2 = 10;
	int b2 = 20;
	cout << a2 / b2 << endl; 

	int a3 = 10;
	int b3 = 0;
	//cout << a3 / b3 << endl; //報錯,除數不可以為0


	//兩個小數可以相除
	double d1 = 0.5;
	double d2 = 0.25;
	cout << d1 / d2 << endl;

	system("pause");

	return 0;
}

總結:在除法運算中,除數不能為0

示例2:

//取模
int main() {

	int a1 = 10;
	int b1 = 3;

	cout << 10 % 3 << endl;

	int a2 = 10;
	int b2 = 20;

	cout << a2 % b2 << endl;

	int a3 = 10;
	int b3 = 0;

	//cout << a3 % b3 << endl; //取模運算時,除數也不能為0

	//兩個小數不可以取模
	double d1 = 3.14;
	double d2 = 1.1;

	//cout << d1 % d2 << endl;

	system("pause");

	return 0;
}

總結:只有整型變數可以進行取模運算

示例3:

//遞增
int main() {

	//後置遞增
	int a = 10;
	a++; //等價於a = a + 1
	cout << a << endl; // 11

	//前置遞增
	int b = 10;
	++b;
	cout << b << endl; // 11

	//區別
	//前置遞增先對變數進行++,再計算表示式
	int a2 = 10;
	int b2 = ++a2 * 10;
	cout << b2 << endl;

	//後置遞增先計算表示式,後對變數進行++
	int a3 = 10;
	int b3 = a3++ * 10;
	cout << b3 << endl;

	system("pause");

	return 0;
}

總結:前置遞增先對變數進行++,再計算表示式,後置遞增相反

3.2 賦值運算子

作用:用於將表示式的值賦給變數

賦值運算子包括以下幾個符號:

運算子術語示例結果
= 賦值 a=2; b=3; a=2; b=3;
+= 加等於 a=0; a+=2; a=2;
-= 減等於 a=5; a-=3; a=2;
*= 乘等於 a=2; a*=2; a=4;
/= 除等於 a=4; a/=2; a=2;
%= 模等於 a=3; a%2; a=1;

示例: