为了账号安全,请及时绑定邮箱和手机立即绑定

下列选项中无法输出字符串“her”的是?

下列选项中无法输出字符串“her”的是?

C
包小龙虾 2018-08-28 14:09:03
无法输出字符串“her”的是?A.char a[ ]={'h','e','r','\0'};                       B.char a[ ]={'h','e','r',0};puts(a);                                                     puts(a);C.char a[4]={'h','e','r','0'-48};                  D.char a[4]={'h','e',0,'r'};puts(a);                                                     puts(a);
查看完整描述

2 回答

?
onemoo

TA贡献883条经验 获得超454个赞

你知道 C 语言字符串是“以 null 字符结尾的一串字符”,这个 null 字符通常写作 '\0',对吧。 所以你知道 A 选项可以输出 "her"。

回想一下用转义方式表示字符的写法,其中一种就是“\八进制数”,所以 '\0' 不是什么特殊表示法,这其实就是八进制数转义为字符的写法。既然 C 语言规定 '\0' 是 null 字符,也就是说 null 字符的值其实就是整型数 0。


那么初始化列表中的 0 就会将字符数组中相应元素赋为 null 字符。

B 选项的写法和 A 选项有同样的结果。

D 选项自然只能打印出 "he"

C 选项嘛。如果假定使用 ASCII 编码,那么初始化列表最后一项 '0' 的编码就是 48,相减后这一项是 0,其实和 B 选项是一样的。当然也能打印出 "her"。    这里如果我说题目不严谨可能有点吹毛求疵了,不过确实无法保证所有编码中 '0' 的值都是 48。


最后提示下:虽然整型数 0 作为 char 类型就是 null 字符,但最好在你需要使用 null 字符时明确写 '\0',不要依赖整型 0 自动转型为 char。

查看完整回答
反对 回复 2018-09-08
?
北顾岛城

TA贡献14条经验 获得超9个赞

D,只能输出he

查看完整回答
反对 回复 2018-08-28
  • 2 回答
  • 2 关注
  • 1098 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信