---
# System prepended metadata

title: Char (字元)
tags: [程式設計]

---

# Char (字元)
###### tags: `程式設計`
字元 (char) 在程式裡面是用來儲存字元的變數型態
| 變數型態 | 儲存資料 |
| :----: |:----:|
| char     |  `'A'`、`'+'`、`'#'`、`'s'`、`'!'`. . . . ....|
## ASC-II
字元根據ASC-II編碼，從0～127共128個，每一個字元都對應到不同的號碼

| 整數編碼 | 字元 |
| :----: |:----:|
| 65     |  'A'  |
| 66     |  'B'  |
| 67     |  'C'  |
| 97     |  'a'  |
| 98     |  'b'  |

維基百科網址：<https://zh.wikipedia.org/wiki/ASCII>
## 控制字元
**字元可分為控制字元和可顯示字元。**
 
控制字元（編號 0~31、127，共33個）顧名思義就是有 <font size=5>**控制功能**</font>，沒有辦法顯示出來
| 整數編碼 | 控制字元 | 意義 |
| :----: |:----:|:----:|
| 0     | '\0'  |空字元 (NULL)|
| 9     | '\t' |定位字元 (TAB)|
| 8     |  '\b'   |退格 (BACKSPACE)|
- 當C++把這些整數解讀成字元輸出，就會執行該 **控制字元** 的功能
- 控制字元前面有一個反斜線`\`叫做跳脫符號
## 可顯示字元
可顯示字元（編號 32~126，共95個），每一個會對應到 **一個半型字**
| 整數編碼 | 字元 |
| :----: |:----:|
| 32     | ' ' |
| 42     | '\*'|
| 50     | '2' |
| 97     | 'a' |
# 程式
在C++裡面要宣告字元：
```cpp
char text = 'x'
```
:::info
注意宣告 **字元** 是用 **單引號** ，宣告 **字串** 則是用 **雙引號** 。
:::
---
如果你宣告的時候不只有輸入一個字元，像這樣：
```cpp
#include <iostream>
using namespace std;
main()
{
    char text = 'abc'
    cout<<text;
}
```
<font size=5>**[output]**</font>
```
c
```
則會取最後一個字元

---
## 字元和整數的轉換
整數轉成字元：
```cpp
(char)整數
```
<font size = 4>範例:</font>
```cpp=
#include <iostream>
using namespace std;
main()
{
    int i ;
    for (i = 97;i<=122;i++)
    {
        cout<<i<<" "<<(char)i<<endl;
    }
}
```
<font size =5>**[output]**</font>
```
97 a
98 b
99 c
100 d
101 e
102 f
103 g
...
......
```
---
 字元轉成整數：
```cpp
(int)字元
```
<font size = 4>範例:</font>
```cpp=
#include <iostream>
using namespace std;
main()
{
    cout<<(int)'\0'<<endl;
    cout<<(int)'\n'<<endl;
    cout<<(int)'A'<<endl;
    cout<<(int)'!'<<endl;
}
```
<font size =5>**[output]**</font>
```
0
10
65
33
```
例題：
---
>[Zerojudge a009: 解碼器](https://zerojudge.tw/ShowProblem?problemid=a009 "游標顯示")
>
這題是字元和字串的混合應用
由 ASCII 查表可知 K=-7
<font size =5>**[code]**</font>
```cpp=
#include <iostream>
#include <string>
using namespace std;
main()
{
    string x;
    cin>>x;
    for(int i=0 ; i<x.length() ; i++)
	{
        char n = x[i];
        n = n - 7;
        cout<<n;
	}
}
```