# 【知識精講】中文和英文字符
## Part1
細心的同學可能會注意到,輸入法工具條上,有一個月牙形的標志[](http://res.jisuanke.com/img/upload/20151218/4cd145e08f92c38941e1e21bb630cb45c31d996a.png),這個標志有的時候會給我們帶來一些意想不到的麻煩……
傳統上,在英語或者其他拉丁字母語言使用的計算機系統中,每一個字母或者符號都使用一個字節的空間來存儲——而對于方塊字系統,比如中文、日文或者韓文,因為文字數量太大,通常使用兩個字節來儲存。
在使用固定寬度文字的地方,比如各種編程工具或者計蒜客的在線代碼框,我們輸入的字母和英文標點符號都使用一個字節的空間來存儲,并占一個空格的寬度。這些占用一個空格寬度的字符被稱為半角字符。而漢字或者中文標點則占用大于一個空格的寬度,被稱為全角字符。
## Part2
對于輸入法來說,有些字符,比如英文字母或者阿拉伯數字,雖然是半角,但你可以點擊我們上面看到的那個月牙形標志,或者按鍵盤上的 Shift + Space 鍵,強制其按照全角字符輸入。如下圖所示——請注意第一行的半角數字與最后一行的全角數字之間的區別。
| 半角字符 | 0123456789 |
| --- | --- |
| 全角字符 | 0123456789 |
此外,對于同一個標點符號,在中文和英文狀態下輸入得到的結果也是不同的:如果鍵盤上的某個符號,在中文中恰好有對應的標點符號的話,那么輸入法在中文輸入狀態下就會將其轉化為中文標點。仔細觀察可以看出,中文字符通常要比對應的英文字符寬一些。
| 標點名稱 | 英文標點 | 中文標點 |
| --- | --- | --- |
| 逗號 | , | , |
| 分號 | ; | ; |
| 小括號 | () | () |
| 中括號 | \[\] | 【】 |
| 單引號 | ' ' | ‘ ’ |
| 雙引號 | " " | “ ” |
| 冒號 | : | : |
| 感嘆號 | ! | ! |
| 問號 | ? | ? |
## Part3
這個功能對于文字工作來說可以帶來一定的方便,但是對于編程來說卻容易給我們帶來不必要的麻煩——一般情況下,除了注釋或者表示字符串的特定位置之外,編程過程中是不允許出現任何全角字符的,否則程序會報錯。
如果你在后面的代碼課中遇到程序報錯,而你自己確認代碼中沒有中文標點或邏輯錯誤,可以檢查一下是不是有些容易混淆的字符搞錯了。容易混淆的主要就是這樣兩對組合:數字 0 和字母 O,數字 1 和字母 l。
- 教材介紹
- 《編程初學入門常識》
- 什么是程序語言
- 【知識精講】編程與編程語言
- 【選擇測試】編程語言分類
- 【知識精講】高級語言分類
- 【選擇測試】編譯與解釋
- 【選擇測試】程序員笑話-Java
- 熟悉鍵盤上用于編程的鍵位
- 【知識精講】認識你的鍵盤
- 【知識精講】中文和英文字符
- 【匹配測試】識別中英文符號
- 【選擇測試】中英文符號的影響
- 【伴隨編程】不要使用中文引號
- 【伴隨編程】不要使用中文分號
- 【伴隨編程】正確地輸入符號
- 【選擇測試】找出程序中的錯誤
- 初始工程師思維
- 【知識精講】二進制思想
- 【選擇測試】程序員笑話-湊整
- 【知識精講】閉合的邏輯
- 【選擇測試】程序員笑話-條件
- 程序員職業與生活
- 【知識精講】程序員的發展方向
- 【知識精講】程序員的裝備
- 【知識精講】程序員的健康
- 【選擇測試】做一名健康的程序員
- 《C++程序設計》
- 前言
- 【知識精講】編程與計算機科學
- 【知識精講】編程與軟件工程
- 【知識精講】如何學習編程
- 你好C++
- 【知識精講】你好,C++
- 【知識精講】C++程序是如何開發的
- 【知識精講】成為一名Power User
- 【伴隨編程】讓我們一起說你好
- 【知識精講】你的第一個C++語言程序
- 【伴隨命令】編譯、運行你的程序
- 【伴隨編程】將變量流式輸出
- 【選擇測試】變量的作用域
- 【知識精講】變量與數據類型
- 【匹配測試】C++語言的入門概念
- 【知識精講】在程序中學會換行
- 【選擇測試】正確地換行
- 簡單數學運算
- 【知識精講】重新認識基本運算
- 【選擇測試】運算符的理解
- 【伴隨編程】做一下簡單的運算
- 【伴隨編程】a 的 n 次方
- 【知識精講】數學函數
- 【伴隨編程】讓C++語言變成計算器
- 【伴隨編程】計算球的體積
- 【匹配測試】數學世界知多少
- 【知識精講】在程序中添加注釋
- 【選擇測試】正確地寫注釋
- 從伴隨輸入到變量地址
- 【伴隨編程】 一個數字復讀機器
- 【選擇測試】理解標準輸入輸出
- 【伴隨編程】一個加法計算器
- 【程序設計】A+B+C問題
- 【伴隨編程】簡單的I/O格式控制
- 【知識精講】地址與取地址符
- 【伴隨編程】看看我們的地址
- 習題一:面積與周長
- 【程序設計】矩形面積與周長
- 【程序設計】三角形面積與周長
- 【程序設計】圓形面積與周長
- 程序中的是與非
- 【知識精講】是非的表示與關系運算
- 【伴隨編程】驗一驗關系運算式
- 【選擇測試】關系運算式求值
- 【知識精講】如果的意義
- 【伴隨編程】分段函數求值
- 【知識精講】如果之后的如果
- 【伴隨編程】五則運算器
- 【選擇測試】分支的嵌套
- 【伴隨編程】問號表達式
- 【知識精講】是非之間的邏輯組合
- 【伴隨編程】判斷閏年
- 【程序設計】日期合法性
- 【知識精講】多路順序結構
- 【知識精講】在程序中學會縮進
- 【選擇測試】正確的縮進
- C++程序中的苦力
- 【知識精講】使用循環結構
- 【選擇測試】對比兩種循環
- 【伴隨編程】使用while循環
- 【填空測試】理解循環結構
- 【知識精講】自減和自增運算符
- 【伴隨編程】使用自增運算符
- 【知識精講】for循環
- 【選擇測試】for循環的使用
- 【程序設計】一大波好玩兒的程序
- 《代碼能力快速提升》
- 《基礎數據結構》
- 《搜索入門》
- 《動態規劃基礎》
- 《數論和基礎數學》
- 《圖和數基礎》