我叫MD 发表于 2019-5-24 21:43:07

请问这行代码是什么意思

printf("%c%c", '\xA1', '\xF6');


下面是运行截图 希望能详细讲解一下


ba21 发表于 2019-5-24 21:54:55

#include <stdio.h>

int main(void)
{
        printf("%c\n", '\x41'); // '\x41' == 'A' == 十六进制41
        printf("%c\n", 'A');
        printf("%c\n", 0x41);
        return 0;
}

我叫MD 发表于 2019-5-24 22:17:09

ba21 发表于 2019-5-24 21:54


我的意思是上面的那行代码为什么会输出一个白色的方框               

Croper 发表于 2019-5-24 22:24:17

printf("%c%c", '\xA1', '\xF6');
‘\xA1’就是16进制表示的A1 ,等于161,
‘\xF6'就是16进制表示的F6,等于246

我叫MD 发表于 2019-5-24 22:33:26

Croper 发表于 2019-5-24 22:24
‘\xA1’就是16进制表示的A1 ,等于161,
‘\xF6'就是16进制表示的F6,等于246

那为什么会输出一个白色的方框呢?

Croper 发表于 2019-5-24 22:56:20

那你就需要去了解下字符编码方面的问题了,
unicode,ansi,utf-8等具体编码方式都不一样,但都有一个共同点就是值大于127(或小于零,根据编译器默认char是signed还是unsigned),那么肯定不是ascii码表内的字符。

ba21 发表于 2019-5-24 23:45:02

本帖最后由 ba21 于 2019-5-24 23:47 编辑

我叫MD 发表于 2019-5-24 22:17
我的意思是上面的那行代码为什么会输出一个白色的方框

是我解释的不够清楚,还是你的理解能力有问题?

bin554385863 发表于 2019-5-25 11:56:47

我叫MD 发表于 2019-5-24 22:17
我的意思是上面的那行代码为什么会输出一个白色的方框

你这属于越界输出字符,C并不会对越界做检查,但是越界输出字符或者数组会造成不可预知的结果
页: [1]
查看完整版本: 请问这行代码是什么意思