編寫一個程序,從鍵盤上輸入一個小寫字母,顯示這個小寫字母及它所對應的大寫字母以及它們的ASCII碼值。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch;
printf("請輸入一個小寫字母:\n");
scanf("%c",&ch);
printf("小寫字母%c對應的大寫字母爲%c,對應的ASCII碼爲:%d\n",ch,ch-32,ch);//小寫字母和對應的大寫字母的ASCII碼相差32.
return 0;
}
心得體會:- 對於char類型和int類型,可以理解爲對內存單元中的數據解析方法不同。以上代碼在編譯時會用警告,是因爲對應的類型不同,可以忽略。
- 在計算機中任何數據最終都是以0101的二進制代碼表示,字符不能直接轉爲二進制,它是先將每個字符對應一個ASCII碼,即一個整形數,然後將整形數轉爲二進制。使計算機能夠識別。
- 對於%c使計算機一字符型來解析ch這個存儲單元,%d則以整形來解析。
- 完全緩衝:緩衝區滿時被清空,常見緩衝區大小爲512B、4096B。常用於文件的輸入。
- 行緩衝:遇到一個換行符時,將清空緩衝區(即回顯),(鍵盤輸入)。
char ch;
ch=getchar();
注意:getchar()返回一個整型值而不是字符值!
若把getchar返回值存儲於ch中,將導致它被截斷!允許以上代碼並不會出錯,字符是以ascii碼錶示的,0-127;但對於一下可能存在錯誤:
char ch ;
while((ch=getchar())!= EOF ) ;
這個被截斷的值被提升爲整形並與EOF比較,循環會出錯。4、注意:C的整型算數運算總是至少以缺省整型類型的精度來進行的。爲了獲得這個精度,表達式中的字符型和短整型操作數在使用之前被轉換爲普通整型。即:整型提升