起因:有一天一個朋友發來一個程序給我看
#include <stdio.h>
void main()
{
int a,b=322;
float x,y=8.88;
char cl='k',c2;
a=y; \\ a=8
printf("a=%d",a);
x=b; \\x=322.000000
a=cl; \\ a等於 字母 k的 asc2 碼 107 ,a=107
<span style="color:#ff0000;"> c2=b; \\ c2 等於 322 這個asc2 碼所對應的 字符</span>
printf("a=%d,x=%f,a=%d,c2=%c\n",a,x,a,c2);
}
答案的輸出:a=107,x=322.000000,a=107,c2=B;
問題就出現在爲什麼c2輸出是 c2=B 呢?
字符型 char
對於單個字符 char ch='B'; 或者 char ch=66; //因爲字符在計算器中其實是用asc2 碼錶存儲的,一個字符佔一個字節(即8位);
對於字符串 char ch[80]="abcdefg";// ch[80],字符串的長度爲80即可以存放79個字符,還有一個到哪去了呢,還有一個 當結束控制符了'\0';
//還有需要提醒的就是 單字符 用 單引號,多字符用雙引號;
好啦前面講的都是寫雞毛蒜皮的事,重點來了,回到上面那個問題 爲什麼c2輸出是 c2=B 呢?
先來個asc2碼錶
acs2碼錶的共有128 個字符(0~127);是不是覺得很奇怪呢 c2=322;超過了127呢;
那該怎麼辦呢,但是c2的輸出是 B;
322=2*128+66; //生氣的東西又出現了,那個輸出的c2=322;對應的字符 B 的asc2碼的 值 就是 66;
那麼聰明的你應該懂了吧?
其實我們一個字符付上 整形值,則這個整形值就有對應的asc2碼值,那麼計算機的內部指令是怎麼走的呢 加上你輸入的是c2=m;這裏的m爲一個整形數
內部指令爲(m+128)mod128= ?;這個問號就是你得到的asc2碼值;
如有疑問/錯誤歡迎廣大網友指出: