目录
ASCII码
我们所看的屏幕上的字符是如何进行显示呢?
我们看到的画面就是字符影像!由显卡控制,由显示器输出。
每个我们看见的字符影像都有自己的影响编码,每个字符对应着各自的影响编码,在计算机中,这种影像编码又是怎样规定的呢?
在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
随着计算机的普及,为了给每种语言的字符设定统一的二进制编码产生了国际码(Unicode又称万国码)
字符就是整型!!!
根据ASCII码,每个字符都有其各自的数字编码,通过使用数字编码即可打印出对应的字符影像
对于一个字符输出其%d格式为其数字编码,输出%c格式就是其字符影像
#include<stdio.h>
int main()
{
char ch = 'A';//通过单引号打印字符 %c所见即所得
printf("影像:%c 编码:%hhd\n", ch, ch);
char ch2 = 0b00101010;//通过使用二进制编码打印字符 输出时%c即可打印出对应字符
printf("影像:%c 编码:%hhd\n", ch2, ch2);
return 0;
}
注意:空格和回车也是ASCII码表中的字符,输入空格和回车也会被读入
更好地理解数字编码:根据字符数字编码的特性,通过小写字母对应的数字编码转变成大写字母对应的数字编码即可将小写字母字符转变成大写字母字符(根据ASCII码,小写字母数字编码-32等于大写字母数字编码)
#include<stdio.h>
int main()
{
char ch;
for (int i = 1; i <= 6; i++)
{
scanf_s("%c", &ch, 1);
if (ch >= 97 && ch <= 122)
{
ch -= 32;
}
printf("%c", ch);
}
return 0;
}
汉字字符
由于汉字字符需要使用两个字节才能保存,而char只能存储一个字节,所以需要使用一个双字节字符类型wchar_t
#include<stdio.h>
#include<locale.h>//setlocale函数头文件 设置本地化
int main()
{
setlocale(LC_ALL, "chs");//使用setlocale函数将本机的语言设置为简体中文(chs) LC_ALL表示设置所有选项
wchar_t ch = L'喜';//L前缀表示需要用两个字节存储宽字符
printf("%wc", ch);//%wc输出wchar_t宽字符类型
return 0;
}
转义字符
为了帮助记忆一些常用的特殊字符,单引号内使用反斜杠表示转义字符。
八进制和十六进制的转义字符:\0和\x
#include<stdio.h>
int main()
{
char ch1 = '\0101';//八进制设置字符编码
char ch2 = 65; //十进制设置字符编码
char ch3 = '\x11';//十六进制设置字符编码
printf("%d %c %d\n", ch1, ch2,ch3);
//\x表示后面的字符是十六进制数,\0表示后面的字符是八进制数。
//例如十进制的17用十六进制表示就是‘\x11’, 49用八进制表示就是‘\0101'
return 0;
}