关于汉字字符串的一些问题与疑惑
程序代码:
#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]);这个无汉字的测试,这个没有问题啊!
希望能够分别回答,不然会搞不清楚的!谢谢合作!