关于汉字字符串的一些问题与疑惑
程序代码:#include<stdio.h>
main()
{
char a[3]="一";
printf("%c%c\n",a[0],a[1]);
printf("%d %d\n",a[0],a[1]);
unsigned int i=a[1];
int j=a[0];
printf("%u %d\n",a[1],a[0]);
printf("%d %d\n",i,j);
char b[2]="2";
printf("%u\n",b[0]);
}如上程序所示,问题一:printf("%c%c\n",a[0],a[1]);这个是我在本论坛上找到的,居然这样能够输出一个汉字,不知道谁能解释下?我有点不能理解
问题二:printf("%d %d\n",a[0],a[1]);为什么输出的是负数?
问题三:关于汉字的字符的话,应该涉及到了Unicode了吧,我网上查了下一的unicode编码十进制为19968,请问我能否在程序中输出任意汉字的编码??如何得出汉字的编码?
问题四:问题一中的printf("%c%c\n",a[0],a[1]);中将%c%c改为%c %c的话输出了两个??问号,请问这个怎么回事,能解释下吗?
问题五:printf("%u %d\n",a[1],a[0]);为什么我用无符号整型输出a[1]时输出的是4294967227,这个数字非常大,已经超出了无符号整型的范围了吧,请问怎么回事,是错误吗?我自己对问题五我写了 char b[2]="2";printf("%u\n",b[0]);这个无汉字的测试,这个没有问题啊!
希望能够分别回答,不然会搞不清楚的!谢谢合作!









