请问这行代码是什么意思
printf("%c%c", '\xA1', '\xF6');下面是运行截图 希望能详细讲解一下
#include <stdio.h>
int main(void)
{
printf("%c\n", '\x41'); // '\x41' == 'A' == 十六进制41
printf("%c\n", 'A');
printf("%c\n", 0x41);
return 0;
} ba21 发表于 2019-5-24 21:54
我的意思是上面的那行代码为什么会输出一个白色的方框 printf("%c%c", '\xA1', '\xF6');
‘\xA1’就是16进制表示的A1 ,等于161,
‘\xF6'就是16进制表示的F6,等于246 Croper 发表于 2019-5-24 22:24
‘\xA1’就是16进制表示的A1 ,等于161,
‘\xF6'就是16进制表示的F6,等于246
那为什么会输出一个白色的方框呢?
那你就需要去了解下字符编码方面的问题了,
unicode,ansi,utf-8等具体编码方式都不一样,但都有一个共同点就是值大于127(或小于零,根据编译器默认char是signed还是unsigned),那么肯定不是ascii码表内的字符。 本帖最后由 ba21 于 2019-5-24 23:47 编辑
我叫MD 发表于 2019-5-24 22:17
我的意思是上面的那行代码为什么会输出一个白色的方框
是我解释的不够清楚,还是你的理解能力有问题?
我叫MD 发表于 2019-5-24 22:17
我的意思是上面的那行代码为什么会输出一个白色的方框
你这属于越界输出字符,C并不会对越界做检查,但是越界输出字符或者数组会造成不可预知的结果
页:
[1]