最近廢話不多繼續提升。
字符常量
‘a’和’9’都是字符常量
注意:’9’和9有很大區別
※單引號的空格’□’也是一個字符常量,但不能寫成連續兩個單引號’’
字符變量
char c; /*定義一個字符變量*/
※字符變量在內存中占一個字節,它只能存放ASCII(美國信息交換標准代碼)碼。
※標准的ASCII碼只有127個字符(見附錄1),電子設備統一了標准,各種電報機,打印機,電腦就可參照標准大規模生產,還可以通過ASCII碼交換數據。
※我們在用鍵盤輸入數據時,電腦會從ASCII對照表中讀取相應的ASCII碼裝入內存,而不是真實的字符。同理,想要顯示信息在屏幕上時,也要使用參照表將ASCII碼轉換成字符,再顯示在屏幕上。
※大家看到,在 ASCII碼表中,每個字符都有序號,要記住我們常用的字符對應的序號也不難,方法如下:
‘0’~’9’對應的整數為48~57
‘A’~’Z’對應的整數為65~90
‘a’~’z’ 對應的整數為97~122
※大寫字母與小寫字母的差值為32,於是得出小寫字母減32的值剛好是對應的大寫字母。
字符類型的輸入輸出
printf和scanf 兩個函數的意思是:printf => print + format 。 sacnf => scan + format .
格式控制符為%c
如:
char c;
scanf(“%c”,&c);
printf(“%c”,c);
putchar和getchar
如:
char c;
c=getchar();
putchar(c);
※無論是字符還是字符串常量,引號在屏幕上輸入輸出都不會顯示。在編程時一定要加上,以區分其它類型的常量。
字符運算
※C語言規定,所有的字符運算都是轉成ASCII碼的整數運算。
如:
‘B’-‘A’ 相當於66-65=1
‘a’+1相當於97+1=98=’b’
‘9’+’9’ 相當於57+57=114=’r’
※既然字符型數據和整型數據可這么方便的轉換,那么字符型數據也經常使用%d輸出,用來得到字符的ASCII碼序號。
※不可以對字符串進行類似的運算,如”b”-“a”是錯誤的,字符串運算必須通過函數,將在后面介紹
// 9 _1 字符運算 #include <stdio.h> void main() { int i1, i2; char c1, c2; //字符 + 整型 賦值給整型 i1 = 'a' + 1; i2 = 'a' - 'b'; printf("i1 = %d\n i2 = %d\n", i1, i2); //整型 賦值給字符型 c1 = 97; c2 = 48; printf("c1=%c\nc2=%c\n", c1, c2); printf("整型輸出字符型c1=%d\nc2=%d\n", c1, c2); printf("字符型輸出整型i1=%c\ni2=%c\n", i1, i2); }
用scanf輸入字符
※每個%c只接收一個字符
scanf(“%c%c%c”,&a,&b,&c);
如果輸入
uvwxyz(回車)
系統會自動一個一個地截取,使a=’u’,b=’v’,c=’w’
※在字符型變量上使用列寬控制時,第一個變量只會讀取第一個字符,第二個變量會跳躍列寬后再讀取一個字符
scanf(“%3c%3c”,&c1,&c2);
如果輸入
abcde(回車)
c1為a,c2為d 因為是3個字符列寬,所以c2為d
※空格和回車都作為字符
scanf(“%c%c%c”,&a,&b,&c);
如果輸入
x□y□z □ 占位符代表回車和空格
系統會自動使a=’x’,b=’□’,c=’y’,最右邊的兩個字符被丟棄
如果輸入
x(回車)
yz
a、c與前面相同,但是b會賦於一個回車。也就是ASCII碼的10。