一、char類型 1.char類型存儲的是整數而不是字元,例如:在ASCII中,65代表A; 2.標準ASCII範圍為0-127;商用統一編碼Unicode創建一個全球字元合集; 3.註意點:C語言把1位元組定義為char類型占用的位數,因此在16位,32位,64位系統中都是可以用char類型的。有 ...
一、char類型
1.char類型存儲的是整數而不是字元,例如:在ASCII中,65代表A;
2.標準ASCII範圍為0-127;商用統一編碼Unicode創建一個全球字元合集;
3.註意點:C語言把1位元組定義為char類型占用的位數,因此在16位,32位,64位系統中都是可以用char類型的。有敵意i但值得註意就是在Java中,char類型是占兩個位元組的,而byte類型才會占用一個類型;
4.聲明方式:
聲明一個字元,我們需要使用單引號將其引用起來。不能使用雙引號
我們可以這樣char a = 65;但是並不推薦這樣寫,因為在跨系統的時候,可能會因為編碼形式的不同,導致棘手的問題。
(1)註意點:char類型在C語言中將字元常量視為int類型,而不是char類型
char a = 'A'; char b = 'DABC'; printf("%c\n",a); printf("%c",b);
可以看出,變數b可以存儲四個字元,但是當列印的時候我們只會列印出後面的八位,即C,不會列印前面,這種形式也用於“變位”操作。
5.非列印字元
有些字元比如:換行、空格等特殊字元無法列印出,我們有兩個方式進行
(1)使用ASCII碼,比如:蜂鳴字元就是7,可以這樣寫char a = 7;
(2)使用轉義序列
轉義序列 |
含義 |
\a |
警報(ANSI C) |
\b |
退格 |
\f |
換頁 |
\n |
換行 |
\r |
回車 |
\t |
水平製表符 |
\v |
垂直製表符 |
\\ |
反斜杠 |
\' |
單引號 |
轉義序列 |
含義 |
\" |
雙引號 |
\? |
問號 |
\0oo |
八進位(oo必須是有效的八進位數字,即每個o可表示 |
\xhh |
十六進位(hh必須是有效的十六進位數,即每個h可表示0~f中的一個數字) |
(3)C90中添加了警報聲音,也就是\a,但是在某些系統中是不起作用的,C規定:警報字元是不改變活躍位置的(這個活躍位置,我們可以理解為游標)
(4)八進位其實可以省略前面的0,比如:'\007',可以寫為‘\07',甚至可以寫為'\7';
(5)整數常量的例子
類型 |
十六進位 |
八進位 |
十進位 |
char |
\0x41 |
\0101 |
N.A. |
int |
0x41 |
0101 |
65 |
unsigned int |
0x41u |
0101u |
65u |
long |
0x41L |
0101L |
65L |
unsigned long |
0x41UL |
0101UL |
65UL |
long long |
0x41LL |
0101LL |
65LL |
unsigned long long |
0x41ULL |
0101ULL |
65ULL |
(6)使用ASCII碼時,註意數字和數字字元的區別,例如:字元4對應的ASCII碼是52,’4‘表示字元4,不是數值4
(7) ASCII碼和轉義字元相比,推薦使用轉義字元,因為這樣可移植性強,且易於識別。
(8) 如果要使用ASCII碼,為何要寫成\032,而不是032,首先’\032'能夠更加清晰的表達程式員使用字元編碼的意圖,並且這樣寫是可以嵌套到字元串中去的,比如:printf("Hello!\007\n")
三、源碼:
D9_1_TypeOfchar.c
https://github.com/ruigege66/CPrimerPlus/blob/master/D9_1_TypeOfchar.c
https://github.com/ruigege66/CPrimerPlus/blob/master/D7_toobig.c
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人賬號,僅用於技術交流,後臺回覆“禮包”獲取Java大數據學習視頻禮包、