对于系统如何存储和显示汉字进行了实验
实验环境:OS:win7; IDE:cfree; DEBUG:mingw5
实验一:使用字符数组存储汉字并输出,观察内存状态
- code
#include<iostream>
using namespace std;
int main(){
char c[2];
cout<<"输入汉字: ";
cin>>c;
cout << "输出结果:";
cout << c;
cout <<endl;
return 0;
}
debug
初始内存状态
输入汉字后内存状态
成功输出汉字
结论
- 一个汉字在内存中使用两个字节表示
- 从终端输入字符时按下回车会输入
\0
,即输入戴
到数组中,实际传入数组的是戴\0
,会比输入多一个字节
实验二:只输出一个字节会显示什么,使用循环输出两字节能否显示汉字
- code 1:单独输出一个字节
#include<iostream>
using namespace std;
int main(){
char c[2];
cout<<"输入汉字: ";
cin>>c;
cout << "输出c[0]:"<<c[0]<<endl;
cout << "输出c[1]: "<<c[1]<<endl;
return 0;
}
- 结果
- code 2: 连续输出两个字节
#include<iostream>
using namespace std;
int main(){
char c[2];
cout<<"输入汉字: ";
cin>>c;
cout << "输出结果:";
for (int i=0;i<2;i++){
cout << c[i];
}
cout <<endl;
return 0;
}
成功输出汉字
结论
- 如果只输出一个字节
cout<<c[0];
或cout<<c[1];
将不显示任何东西 - 系统对两个字节进行解析才能解析出汉字,因此连续输出两个字节可以输出一个汉字
- 如果只输出一个字节