---
# System prepended metadata

title: C++_型別(型態資料)

---

# C++_型別(資料型態)

 原始內建型別
 -
C++定義了一組原始型別，包含**算數型別**以及一個特殊型別**void**。
**void**型別沒有關聯的值，而且只能用在少數幾種情形，
最常用作**不回傳值的函式之回傳型別**(之後寫函式會提到)

---

 算數型別
 -
算數型別可以分成兩類:
**1.整數值型別(包含字元和boolean型別)
2.浮點數型別**

在 C++ 中，算術型別可以用於進行各種**算術**運算，
包括**加、減、乘、除、模、自增、自減**等。
此外，算術型別也可以用於進行**比較**運算，
例如**等於、不等於、大於、小於、大於等於、小於等於**等。


| 型別        | 意義                           | Bytes(位元組) | 範圍    |
| ----------- | ------------------------------ | ------------- | --- |
| bool        | boolean值                      | 1             |   （true）和（false）  |
| char        | 字元                           | 1             |    -128到127 |
| short       | 短整數                         | 2             |  -32768 到 32767   |
| int         | 整數                           | 4             |   -2147483648 到 2147483647  |
| long        | 長整數                         | 4             | -2147483648 到 2147483647    |
| long long   | 長整數                         | 8             |  -9223372036854775808 到 9223372036854775807   |
| float       | 單精度(single-precision)浮點數 | 4             | 約 -3.402823e+38 到 3.402823e+38    |
| double      | 雙精度(double-precision)浮點數 | 8             | 約 -1.797693e+308 到 1.797693e+308    |

還有很多，之後會提到


如果值超過最大的整數表示，編譯器會產生錯誤。
所以為了避免編譯錯誤，我們應該選擇合適的型別來表示我們的數值。
如果我們知道數值可能超過某個型別的最大表示範圍，則應該選擇更大的型別。

例如，32 位元的 int 型別的最大表示範圍為 2147483647（十進位制）。
如果一個值超過 2147483647，則在編譯時會產生錯誤。




 signed, unsigned
-
你可能看過像是**signed int、unsigned int**等等的型別，
其實就只是數值的範圍等等的會被限制而已，目前還不會提到，
如果有興趣，可以點一下連結。
 
> 終界傳送門:the end? (這是外面找的，我還在努裡趕工中)
整數限制:https://learn.microsoft.com/zh-tw/cpp/cpp/integer-limits?view=msvc-170
浮點數限制:https://learn.microsoft.com/zh-tw/cpp/cpp/floating-limits?view=msvc-170

