鱼C论坛

 找回密码
 立即注册
查看: 1707|回复: 7

[已解决]请问这行代码是什么意思

[复制链接]
发表于 2019-5-24 21:43:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. printf("%c%c", '\xA1', '\xF6');
复制代码



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

代码运行截图

代码运行截图

最佳答案
2019-5-24 22:56:20
那你就需要去了解下字符编码方面的问题了,
unicode,ansi,utf-8等具体编码方式都不一样,但都有一个共同点就是值大于127(或小于零,根据编译器默认char是signed还是unsigned),那么肯定不是ascii码表内的字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-24 21:54:55 | 显示全部楼层
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         printf("%c\n", '\x41'); // '\x41' == 'A' == 十六进制41
  5.         printf("%c\n", 'A');
  6.         printf("%c\n", 0x41);
  7.         return 0;
  8. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-24 22:17:09 | 显示全部楼层

我的意思是上面的那行代码为什么会输出一个白色的方框               
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-24 22:24:17 | 显示全部楼层
  1. printf("%c%c", '\xA1', '\xF6');
复制代码

‘\xA1’就是16进制表示的A1 ,等于161,
‘\xF6'就是16进制表示的F6,等于246
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-24 22:33:26 | 显示全部楼层
Croper 发表于 2019-5-24 22:24
‘\xA1’就是16进制表示的A1 ,等于161,
‘\xF6'就是16进制表示的F6,等于246

那为什么会输出一个白色的方框呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-24 22:56:20 | 显示全部楼层    本楼为最佳答案   
那你就需要去了解下字符编码方面的问题了,
unicode,ansi,utf-8等具体编码方式都不一样,但都有一个共同点就是值大于127(或小于零,根据编译器默认char是signed还是unsigned),那么肯定不是ascii码表内的字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-24 23:45:02 | 显示全部楼层
本帖最后由 ba21 于 2019-5-24 23:47 编辑
我叫MD 发表于 2019-5-24 22:17
我的意思是上面的那行代码为什么会输出一个白色的方框


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

2019524_234625.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-25 11:56:47 | 显示全部楼层
我叫MD 发表于 2019-5-24 22:17
我的意思是上面的那行代码为什么会输出一个白色的方框


你这属于越界输出字符,C并不会对越界做检查,但是越界输出字符或者数组会造成不可预知的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 11:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表