unsigned char 类型

来源:百度知道 编辑:UC知道 时间:2024/05/14 09:34:45
unsigned short i=0;
unsigned char key[5];

for(i=0;i<5;i++)
{
key[i]= (unsigned char)i;
}
CEdit* pedit = (CEdit*)GetDlgItem(IDC_EDIT_DISP);
pedit->SetWindowText((char*)key);
MessageBox((char*)key【0】,"",0);
为什么编辑框和对话框显示为空,该怎么写才能显示01234。急
zubyzuby 太厉害了。只是我还有点不明白为什么(unsigned char)(i+‘0’)结果会是i,并且长度是1,难到‘0’是字符结束符,那长度也该是二啊,当不加‘0’时却是空值,实在想不明白。
最佳答案是zubyzuby 的,不过要是谁能解释我补充的问题我再加分。

补充:

楼主没有弄清楚整数1和字符'1',建议看一下ASCII码表
char ch1 = 0;
char ch1 = '\0';
char ch2 = '0';

'0' 和 '\0'是不同的
'0' 是字符,用0x30(10进制=48)表示
'\0'是字符串结束符,就是整数0

可以用0代替'\0',但是为了标明是字符串结束符最好用'\0',这样便于程序阅读和查错。

char ch1 = '\0'; /* char ch1 = 0;也可以 */
char ch2 = '0';
printf("%d %c", ch1,ch2);/*检验*/

字符数组和字符串的区别

字符数组用来存储字符串,输出字符串的时候,遇到'\0'就结束,后面的字符不会输出
如果数组没有字符串结束符,输出字符串可能会有数不完的乱码,甚至会因为访问不能访问的地址导致程序异常终止
char ch[5];
cha[0] = '0';
cha[1] = '1';
cha[2] = '2';
cha[3] = '3';
cha[4] = '4';
printf("%s", ch);/* 输出结果无法预料 */

------------------------------------------

unsigned short i=0;
unsigned char key[6]; /* 字符串 “01234“ 要6个位置存储,字符串结束符'\0'要占一个位置,计算字符串长度的时候不包括