# [C++] 開始 C++ 的旅程 ###### tags: `C++` 為了省去一些麻煩,可以用[這個網站](https://www.onlinegdb.com/online_c++_compiler)來編譯C++程式碼。 ## Hello world! ```cpp= #include <iostream> using namespace std; int main(){ /* print hello message 133221333123111 */ cout << "Hello world!" << endl; // return value 0 return 0; } ``` 以上就是一支 C++ 的 Hello world! 程式。我們一行一行剖析這支程式: * 第 1 行:用來載入和輸入輸出相關的標頭檔。 * 第 2 行:告訴系統你要使用`std`這個命名空間。至於什麼是命名空間,我們稍後會再說明。 * 第 4 行~第 12 行是主程式: * 第 5 行~第 8 行:用`/*`和`*/`包夾起來的是註解。如果註解為單行,也可以像第 10 行那樣使用`//`並在同一行的後面寫上註解。 * 第 9 行:印出`"Hello world!"`字串。`cout`是定義在`std`命名空間用來輸出東西的方法;`endl`則是換行符號。 * 第 11 行:因為`main`的回傳型態宣告為`int`(這是規定在C++的標準中的,可以參考[這篇](https://blog.moli.rocks/2016/12/15/why-should-main-return-in-c/)),所以要`return`一個值,這邊我們回傳`0`代表執行成功。 跟 Python 相比,C++ 似乎囉嗦了點。在語法上,C++ 和 Python 有許多不同的地方,特別是要注意以下幾點: 1. C++ 每一行的結尾要加上分號(`;`),除非那一行只有括弧之類的東西。 Python 則不需要加分號。 2. C++ 的排版以自己看了舒服為主,不要寫到自己都覺得亂就可以了。所以你如果把程式全部寫在同一行,電腦也不會報錯。 Python 則有嚴格的縮排規範,該縮排的地方沒縮排、該換行的地方沒換行,電腦都會報錯。 ## 基本資料型態 * `bool` 布林值 * `char` 字元 * `int` 整數 * `float` 浮點數 * `double` 雙精度浮點數 ## 輸入和輸出 我們用`std::cin`來控制輸入以及`std::cout`來印出東西。這些是 C++ 的標準輸入輸出流,不需要型態,會根據變數自動判別。如果有`using namespace std;`這行的話,就不需要再加上`std::`了。以下程式接受一個整數輸入,並把輸入的數字乘以2再印出來: ```cpp= int x; cin >> x; cout << x << "times 2 is" << 2 * x << endl; ``` 注意,如果沒有特別說明,我們的範例程式都會寫在`main`裡面: ```cpp= #include <iostream> using namespace std; int main() { /* 主程式的程式碼寫在這裡 */ return 0; } ``` ## 運算 C++的基本運算規則和Python相似,以下我們做個簡單的介紹。 * 加號 `+` 可以用來進行一般的加法: ```cpp= int a = 5; int b = 3; cout << a + b; ``` 也可以用來把字串(`string`)給串接起來: ```cpp= string a = "foo"; string b = "bar"; cout << a + b; ``` * 減號 `-` 可以用來進行一般的加法: ```cpp= int a = 5; int b = 3; cout << a - b; ``` 但很可惜,對於`string`並沒有使用減號把相同的地方去除的功能。 * 乘號 `*` 可以用來進行一般的乘法: ```cpp= int a = 5; int b = 3; cout << a * b; ``` * 除號 `/` 可以用來進行除法。如果是整數除法,就只留下商;如果是小數除法,則是保留一些位數的小數,例如: * `5 / 2`會是`2` * `5.0 / 2.0`會是`2.5` * 模 `%` 除法取餘數,例如: * `5 % 3`會是`2` * `100 % 10`會是`0` * 括號 `()` 和數學的括號相同,括號內的部分優先算。注意到就算沒有括號,電腦也會自動先乘除後加減。如果要用括號包括號的話,同樣也是用這種小括號,例如`((1 + 2) * (3 + 4)) * 5`。 * `+=`, `-=`, `*=`, `/=`, `%=`... 這些運算子的使用方式跟Python一樣: `x += 2` 相當於 `x = x + 2`,以此類推。 * 遞增/遞減 注意在C++中: * `x = x + 1`可以寫成`x++`或`++x` * `x = x - 1`可以寫成`x--`或`--x` 把`++`和`--`寫在變數的前面或後面有微妙的不同,我們以後會遇到,現在先把他們當成一樣的東西就好。 ### 例題 小明有`15`張百元鈔,`20`張千元鈔,一本課本`862`元,請問他最多可以買多少本課本?剩下多少錢?請輸出: ``` He can buy 24 textbooks. He still has 812 dollars. ``` :::spoiler 解答 ```cpp= int money = 15 * 100 + 20 * 1000; int n = money / 862; money -= n * 862; // or money %= 862 cout << "He can buy " << n << " textbooks." << endl; cout << "He still has " << money << " dollars." << endl; ``` ::: ## 流程控制 各種程式語言的流程控制邏輯類似,在此就不特別說明。 ### [if/else](https://hackmd.io/@CLKO/HyuwnlMoZ?type=view) ### [switch/case](https://openhome.cc/Gossip/CppGossip/switchStatement.html) ### [while 迴圈](https://hackmd.io/@CLKO/Sk3nDNsiZ?type=view) ### [for 迴圈](https://hackmd.io/@CLKO/H1iyHQc2b?type=view)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up