<style>
html, body, .ui-content {
background-color: #333;
color: #ddd;
}
body > .ui-infobar {
display: none;
}
.ui-view-area > .ui-infobar {
display: block;
}
.markdown-body h1{
color: #9CCEF2;
}
.markdown-body h2,
.markdown-body h3{
color: #B1D6CA;
}
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
color: #ddd;
}
.markdown-body h1,
.markdown-body h2 {
border-bottom-color: #ffffff69;
}
.markdown-body h1 .octicon-link,
.markdown-body h2 .octicon-link,
.markdown-body h3 .octicon-link,
.markdown-body h4 .octicon-link,
.markdown-body h5 .octicon-link,
.markdown-body h6 .octicon-link {
color: #fff;
}
.markdown-body img {
background-color: transparent;
}
.ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a {
color: white;
border-left: 2px solid white;
}
.expand-toggle:hover,
.expand-toggle:focus,
.back-to-top:hover,
.back-to-top:focus,
.go-to-bottom:hover,
.go-to-bottom:focus {
color: white;
}
.ui-toc-dropdown {
background-color: #333;
}
.ui-toc-label.btn {
background-color: #191919;
color: white;
}
.ui-toc-dropdown .nav>li>a:focus,
.ui-toc-dropdown .nav>li>a:hover {
color: white;
border-left: 1px solid white;
}
.markdown-body blockquote {
color: #bcbcbc;
}
.markdown-body table tr {
background-color: #5f5f5f;
}
.markdown-body table tr:nth-child(2n) {
background-color: #4f4f4f;
}
.markdown-body code,
.markdown-body tt {
color: #eee;
background-color: rgba(230, 230, 230, 0.36);
}
a,
.open-files-container li.selected a {
color: #5EB7E0;
}
</style>
###### tags: `tgirc早修book`
# 資料型態
<font color="F5F6B6">**int**</font> 的範圍是 $-2^{31} \le int \lt 2^{31}$ ,也就是 $-2,147,483,648 \le int \le 2,147,483,647$
當運算的數字超過 **int** 的範圍時,可使用 <font color="F5F6B6">**long long**</font>
可儲存範圍到 $2^{63}-1 = 9,223,372,036,854,775,807$ ,大約是 $9\times 10^{18}$
一般常數預設是 **int** 型態,若要改成 **long long** 型態時,要在常數後加上 `LL`
```cpp=
#include <iostream>
using namespace std;
int main(){
long long num=123456789; //10^10
cout<<"溢位(未加LL) "<<num*2<<"\n";
cout<<"無溢位(有加LL) "<<num*2LL<<"\n";
return 0;
}
```
:::warning
當運算數字超過範圍時稱作溢位,儘管結果會在範圍中,只要過程出現溢位,最終的答案就會有問題,因此在做運算時要多加小心
如果超過 **long long** 範圍的話,就要使用**大數**來解題
關於溢位,有興趣可以參考 -> [補充](https://hackmd.io/@Tamilala/overflow)。
:::
<font color="F5F6B6">**unsigned int**</font> 是用來宣告正整數,範圍是 $0 \le unsigned$ $int \le 2^{32}-1$
即 $0 \le unsigned$ $int \le 4,294,967,295$
除了 `int` 宣告常數以外,還有其他種宣告的方式:
* <font color="F5F6B6">**char**</font>:宣告字元,可輸入單個字元,數字無法和常數一樣直接進行運算,以 **Ascii** 進行轉換
* <font color="F5F6B6">**string**</font>:宣告字串,可輸入一串句子,直到**空格**或**換行**,與 char 相同皆為文字型態
* <font color="F5F6B6">**bool**</font>:宣告布林值,範圍 0(false)、1(true)
* <font color="F5F6B6">**float**</font>:宣告浮點數,即可使用小數
* <font color="F5F6B6">**double**</font>:宣告倍精度浮點數,比 float 還要精準不少,進行小數的運算時,建議都以此宣告