【C++ 筆記】常數 / 運算子(上) - part 3
【C++ 筆記】常數 / 運算子(上) - part 3
很感謝你點進來這篇文章。
你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧!
回顧上集內容:
C++ 常見常用資料型態:int、float、double、char,目前只要記得這些即可。
常數(Const)
常數就是不能變的數,被定義為常數後就是一個固定值,又稱實字(也可稱字面量:iteral)。
實字就是字面上的數值,1 就是 1,他固定不變,總之就是表示固定不變的量。
總之就把常數想像成是將一個人石化就對了!
常數定義如下:
1 |
或
1 | const type variable = value; |
type -> 資料型態
vairable -> 變數
value -> 數值
以下是一個範例:
1 |
|
輸出結果:
1 | 50 |
程式碼範例取自:C++ 常量 | 菜鸟教程
程式碼說明:
通常被常數宣告的變數之名稱我們都會習慣用大寫表示,小寫就表示可變變數。
而 NEWLINE 則是以 char(字元) 進行常數變數宣告,表示儲存字元的意思。
字串是由一串字元組成的,字元就好比單一一個英文字母 abcdefg,也可是其他特殊符號 !@#$%^ 等等,而很多個字元組成再一起就形成了一個字串。
所以字串是字元的集合體。
所以字串就是很多字、串在一起。
而 NEWLINE 內容物是 ‘\n’,而需要注意的是,由”成對”單引號「’’」組成的是字元;由”成對”雙引號「””」組成的是字串。
所以跳脫字元 \n 表示換行,也是一種字元。
跳脫字元(Escape Character)
跳脫字元(又可稱逸出字元、轉義字元:Escape Character),為什麼叫跳脫字元?因為字元想逃跑(X。
因為跳脫字元可以讓後面跟隨的字元「跳脫」出原本的字面意義或功能,從而賦予其不同的含義或用途。
像是 \n 表示換行,所以後面的字元是不是也跟著一起換行?
而跳脫字元主要以「\」反斜線後面跟上一個英文字母為主,表示一個特殊意義,注意喔,不是這個斜線「/」,是這個斜線:「\」。
然後讓我們介紹幾個跳脫字元:
| 跳脫字元 | 意義 |
|---|---|
| \” | 顯示雙引號 |
| \’ | 顯示單引號 |
| \ | 顯示反斜線 |
| \0 | 空字元(backslash) |
| \a | 蜂鳴器警報(alert bell) |
| \b | 退格(backspace) |
| \n | 換行(newline) |
| \t | Tab(horizontal tab -> 水平縮排) |
| \v | Tab(Vertical tab -> 垂直縮排) |
以下是一個範例:
1 |
|
輸出結果:
1 | 換行 : |
C++ 運算子(Operator)
C++ 有支援以下運算子:
- 算術運算子
- 關係運算子
- 邏輯運算子
- 位元運算子
- 指定運算子
在步入介紹逐個運算子之前,我們需要了解以下的概念:
運算子是什麼?我們先來舉個例子:
1 + 1
看到這個,你腦海裡浮現過後的第一個念頭肯定會是 2。
讓我們看到 1,它其實就叫做運算元。
「+」是運算子。
「1 + 1」,被稱為(運算式,或稱表達式:expression)
元是資料型態,子是要進行何種操作(像是加法)。
運算式就是運算元加上運算子的結構。
讓我們來整理一下:
運算元(Operand):在運算式中,運算元是資料的值。在例子「1 + 1」當中,兩個「1」都是運算元,運算元是被操作、運算的物件。
運算子(Operator):運算子是一個進行操作的符號。在例子「1 + 1」當中,「+」就是一個運算子,表示加法操作、運算。
運算式(Expression):運算式是由運算元和運算子組成的結構,用於進行計算並回傳結果。在例子中,「1 + 1」就是一個運算式,進行加法運算並回傳結果為「2」。
算術運算子(Arithmetic Operator)
算術運算子,其實就是數學運算子,很簡單,它就是專門在做加減乘除的事情。
以下是 C++ 的算術運算子:
| 運算子 | 描述 |
|---|---|
| + | 將兩個運算元相加。 |
| - | 第一個運算元減去第二個運算元。 |
| * | 將兩個運算元相乘。 |
| / | 相除。第一個運算元作為被除數,第二個作為除數。 |
| % | 稱為取模(mod),相當於除法運算當中的取得「餘數」。 |
| ++ | 遞增運算子,整數值+1。 |
| —(兩個減號) | 遞減運算子,整數值-1。 |
以下是有關於四則運算與取模運算子的範例:
1 |
|
輸出結果:
1 | 2 |
看到這個輸出結果,你可能會疑惑說,為什麼 1 / 2 的結果不會是 0.5 呢?而是 0。
那這個就是有關於資料型態的部分啦!
像是我們在程式當中所看到的,其實都是屬於 int 資料型態的類別,那要有小數點,我們可使用 float、double 這類的資料型態。
具體來說程式碼應該可像以下這樣修改:
1 |
|
輸出結果:
1 | 2 |
至於為什麼在取模運算子時,不能夠使用 1.0、2.0 這類的浮點數寫法呢?原因是這樣的,執行時會出現以下錯誤:
1 | types 'double' and 'double' to binary 'operator%' |
所以說取模運算子只能運用在於整數型態(int)的部分。
如果我們只將一個數字改成浮點數的形式會是怎樣的呢?另外它的資料型態會改變嗎?
1 |
|
輸出結果:
1 | 2 |
順帶一提,在 C++ 當中如果我們要查看一個物件的資料型態的話,我們可以引入 typeinfo 這個標頭檔。
1 |
使用 typeid(數值).name() 就能夠查看這個數值的資料型態了!
i:int,整數。
f:float,單精度浮點數。
d:double,雙精度浮點數。
Ss:String,字串。
c:字元。
可以從上面範例的輸出結果得到 d,表示是一個雙精度浮點數。
遞增遞減運算子(++、—)
遞增遞減運算子有所謂的前置、後置的規則,也就是前綴、後綴的意思。
比如說一個變數 x,如下:
1 | ++x |
以上是前置,前綴。
1 | x++ |
以上是後置,後綴。
前置就是放在前面,後置就是放在後面。 純屬幹話(X
以下是有關於個別遞增遞減運算子的效力:
1 | x = x + 1; |
1 | x = x - 1; |
如果是將 ++、— 放在前面,則當我們運算式在完成運算「之前」會自動遞增或遞減,然後並不會自動將遞增或遞減後的值放到變數當中。
放在後面則是在運算式完成「之後」自動遞增遞減,然後將遞增或遞減值加入到變數當中。
以下是一個範例:
1 |
|
輸出結果:
1 | After a++ of c : 10 |
關係運算子、比較運算子(Relational operator or Comparison operator)
| 運算子 | 描述 |
|---|---|
| == | 比較兩個運算元是否相等。是則回傳 true,不是則回傳 false。 |
| != | 比較兩個運算元是否「不」相等。是則回傳 true,不是則回傳 false。 |
| > | 比較左運算元是否大於右運算元。是則回傳 true,不是則回傳 false。 |
| < | 比較左運算元是否小於右運算元。是則回傳 true,不是則回傳 false。 |
| >= | 比較左運算元是否「大於或等於」右運算元。是則回傳 true,不是則回傳 false。 |
| <= | 比較左運算元是否「小於或等於」右運算元。是則回傳 true,不是則回傳 false。 |
比較運算子就是字面上的意思,比大小啦!!!
1 |
|
哇,靠,好長一串程式碼。
不用擔心,這些其實都只是簡單的條件判斷而已,
在 C++ 當中,使用 if 做條件判斷,意思就是如果。
我們要使用 if 做條件判斷,則條件是需要被兩個小括號給括起來的,像是這樣:
if (a == b){
a == b 如果是 True 的話這邊才會執行哦!
}
然後以兩個中括號將要執行的程式碼包圍起來。(前提是 a == b 要是 true)
而預設條件判斷會自動判斷 true,只有 true 才會執行中括號的程式碼。
而 else 語句則是判斷說:如果上層的條件(if)的條件不成立的話,也就是實際執行 a == b 有可能是 false,那就會執行 else 然後中括號裡面的程式碼。
接下來,讓我們看看程式碼執行的結果:
1 | a == b : false |
然後接著我們一起來檢查 a、b 之間的值:
a == b,首先一開始我們設定變數 a = 10、b = 20,想必兩個值肯定不會相同嘛,false。
a != b,這是對的,a 確實不等於 b,所以會顯示 true。
a > b,這是錯的,a 小於 b,所以顯示 false。
a < b,這是對的,a 小於 b,所以顯示 true。
a >= b,這是錯的,a 不可能大於或等於 b,所以顯示 false。
a <= b,這是對的,a 小於或等於 b,所以顯示 true。
總結
常數(Const)是一個值(value)不能變動的數。
定義方式:
1 |
或
1 | const type variable = value; |
跳脫字元是一種特殊字元,能夠對字串或字元進行特殊的操作,以反斜線「\」加上其他字元結合而成,像是 \n,代表換行的意思。
C++ 有支援以下運算子:
- 算術運算子
- 關係運算子
- 邏輯運算子
- 位元運算子
- 指定運算子
今天講到了算術運算子與關係運算子。
運算元:資料型態的值,被運算的物件。
運算子:能夠對運算元運算的符號。像是 +,能夠進行 1 + 1 運算。
運算式:也可稱為表達式,由運算元跟運算子組合而成,1 + 1 整體是一個運算式。
算術運算子:
基本的加減乘除(+、-、*、/)符號,加上一個取餘數的符號「%」。
++、—(加加、減減)稱為遞增、遞減運算子,自加、減 1,前置後置有差別。
後置可以使運算子的前一個變數自加、減 1,前置不變。
後置表示在運算式完成後才會自加自減。
前置表示在運算式完成前自加自減。
關係運算子:
又可稱為比較運算子,主要用於比較。(來廁所比大小啦!!!)
真的是比大小,沒騙你XD
「==」 (比較兩數是否相等)
「>」 (比較左數是否大於右數)
「<」 (比較左數是否小於右數)
「>=」 (比較左數是否大於或等於右數)
「<=」 (比較左數是否小於或等於右數)
參考資料
C++教學(三):變數與常數-做 個 有 趣 的 人|痞客邦
C++中单引号双引号的区别_c++单引号和双引号的区别-CSDN博客
文章三 c++ 的跳脫字元-angel123的部落格|痞客邦


