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

无法输出字符串“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);

包小龙虾
浏览 1100回答 2
2回答

onemoo

你知道 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。

北顾岛城

D,只能输出he
打开App,查看更多内容
随时随地看视频慕课网APP