
Hello World
第一個 C++ 程式:Hello, World!
1 |
|
在這個程式中,會在螢幕印出 Hello, World! 並換行,接下來就開始解釋這程式的每一個代碼的功用。
引入函式庫
1 |
|
就是引入 iostream 這個函式庫,而 iostream 就是一個輸入 (cin) 和輸出 (cout) 的函式庫。
補充 萬用標頭檔
在競技程式中,可以使用 bits/stdc++.h,他可以為我們節省引入其他的時間。
命名空間
C++ 標準函式庫(Standard Library)包含許多功能,例如剛剛講的 iostream,定義在 std 命名空間(namespace) 內。
如果不加上 using namespace std;,則必須這樣寫 :
1 |
|
主函式
主函式(main())是 C++ 程式的進入點,所有 C++ 程式執行時都會從 main() 開始執行。沒有 main(),C++ 程式無法運行。
然後裡面要寫的內容就放在 { } 裡。
[!NOTE]
提醒每段code後面都要記得加
;喔!
然後 return 0 代表這個函式結束。
輸出
在剛剛的演示程式中,我們使用了 cout << "Hello, World!" << endl; 來把我們要的文字輸出出來。所以現在我們就來細講C++中的輸出。
1 | cout << "Hello, World!" << endl; |
cout:標準輸出。<<:輸出運算子,把內容傳送到cout。"Hello, World!":要顯示的字串。std::endl:換行(等同於'\n')。;:結尾要加分號。
你也可以串很多串
1 | cout << 1 << ' ' << 2 << ' ' << 3 << ' ' << 4 << endl; |
補充 位運算
<< 其實可以使位元左移,意思是說把二進制左移。
然後這跟輸出那邊別搞混了,這兩者在不同情境下有不同的意義!
1 | cout << (5 << 1) << endl; // 结果:5(101) → 10 (1010) |
結論 : 把二進制數左移 $n$ 位,相當於乘以 $2^n$。
接下來介紹變數與運算。
變數
你可以把它當作儲存資料的容器。
常見的說法是 : 把變數當成一個箱子,我們可以把東西丟進去。
資料型別
資料型別可以告訴你箱子裡存的是啥種類的東西。像是丟進去的東西可以是食物、玩具等。
常見的資料型別如下
整數型別
int:最常用的整數型別。範圍 : $[-2^{31} , 2^{31} – 1]$long long:較大的整數。範圍 : $[-2^{63} , 2^{63} – 1]$
浮點數型別
float:單精度浮點數。double:雙精度浮點數,精度較高。
[!NOTE]
精度 指的是數值型別能夠表示的 有效位數,特別是在浮點數運算時,會影響計算的準確性。
字元型別
char:單一字元,通常用於儲存字母或符號。 ex : ‘a’
布林型別
bool:只有true(1)和false(0)兩個值。
還有很多,像是 string,但以第一次接觸來說先知道這些就行了。
宣告
好了,現在來說該怎麼把東西放到箱子裡了。
1 | int a = 10; |
這樣就好了。
語法就是 資料型別 變數名稱 = 要存的內容; 。
可以把那段程式碼看成 : 有一個箱子 a,他要存的是食物 (int),然後我把牛肉 (10) 放進去。
[!CAUTION]
記住變數不能以數字開頭,以及不能和 C++ 的保留字相同。
運算
算術運算子
用來進行數學運算,例如加、減、乘、除等。
| 運算子 | 說明 | 範例 |
|---|---|---|
+ |
加法 | a + b |
- |
減法 | a - b |
* |
乘法 | a * b |
/ |
除法 | a / b (無條件捨去小數) |
% |
取餘數 | a % b(僅限整數運算) |
1 |
|
1 | 加法 : 13 |
賦值運算子
用來將數值指定給變數。
| 運算子 | 說明 | 範例 |
|---|---|---|
= |
指定 | a = 10 |
+= |
加後賦值 | a += 5 → a = a + 5 |
-= |
減後賦值 | a -= 2 → a = a - 2 |
*= |
乘後賦值 | a *= 3 → a = a * 3 |
/= |
除後賦值 | a /= 2 → a = a / 2 |
%= |
餘數後賦值 | a %= 3 → a = a % 3 |
1 |
|
遞增與遞減運算子
用來對變數進行 +1 或 -1 的操作,有前置與後置之分。
| 運算子 | 說明 | 範例 |
|---|---|---|
++a |
前置遞增(先加再使用) | int a = 5; int b = ++a; // a=6, b=6 |
a++ |
後置遞增(先使用再加) | int a = 5; int b = a++; // a=6, b=5 |
--a |
前置遞減(先減再使用) | int a = 5; int b = --a; // a=4, b=4 |
a-- |
後置遞減(先使用再減) | int a = 5; int b = a--; // a=4, b=5 |
1 |
|
這裡前置後置搞不明白的可以先跳過沒關係。
比較運算子 (等後面學到條件式再來看這裡)
用來比較兩個值,結果為 true(1)或 false(0)。
| 運算子 | 說明 | 範例 |
|---|---|---|
== |
是否相等 | a == b |
!= |
是否不等 | a != b |
> |
是否大於 | a > b |
< |
是否小於 | a < b |
>= |
是否大於等於 | a >= b |
<= |
是否小於等於 | a <= b |
邏輯運算子 (等後面學到條件式再來看這裡)
| 運算子 | 說明 | 範例 |
|---|---|---|
&& |
AND(且),兩者皆為 true 才為 true |
(a > 0) && (b > 0) |
|| |
OR(或),一者為 true 就為 true |
(a > 0) || (b > 0) |
! |
NOT(非),取反 | !(a > 0) |
位元運算子
痾….這對新手不太友善,有興趣的自己看看。
輸入
有了變數的概念後,我們就可以來看輸入了。
1 | int a; |
int a:宣告一個整數變數a。cin:標準輸入流,負責從鍵盤讀取使用者的輸入。>>:輸入運算子,將從cin讀取的數據傳送到右側的變數中。a:存放從輸入中讀取到的數值。;:每個語句結尾必須加上分號。
一樣可以串很多串。
1 | int a, b, c; |
補充 位運算
>> 一樣可以進行位運算,意思是說把二進制右移。
然後這跟輸入那邊別搞混了,這兩者在不同情境下有不同的意義!
1 | cout << (20 >> 1) << endl; // 结果:20(10100) → 10 (1010) |
結論 : 把二進制數右移 $n$ 位,相當於除以 $2^n$。
其他補充
關於輸入輸出的補充
在 C++ 中,我們有兩套主要的輸入輸出方式:
- C++ 風格:使用
cin和cout。 - C 風格:使用
scanf和printf。
scanf/printf 通常來說速度會比預設的 cin/cout 快一些,尤其在大量 I/O 操作時更明顯。
所以我們可以透過以下設定來提升效能 :
1 | ios::sync_with_stdio(0); |
不過以現階段來講其實沒差就是了。
輸出格式化
有些題目可能要求輸出小數點後幾位,這時可以利用一些功能完成他。
1 |
|
可以看到 setprecision 會指定總有效數字的位數,() 裡塡 2 就會保留小數點後 2 位數。

null
null