首页  >  文章  >  后端开发  >  为什么 C 中“456”1 输出“56”?

为什么 C 中“456”1 输出“56”?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-01 08:01:02399浏览

Why does

理解“456”1 的输出

在 C 代码中,当表达式“456”1 输出“56”而不是“457”时,它可能看起来很混乱。 ”要理解这种行为,我们必须深入研究代码的复杂性。

在 C 中,字符串存储为字符数组,文字“456”相当于数组 {'4', '5' , '6', ' '}。当算术表达式中使用“456”时,会发生隐式转换。该数组衰减为指向其第一个元素的指针,本质上是指向“4”的指针。

现在,向该指针添加 1 会将其移动到下一个字符,即“5”。当 std::cout 遇到 const char* (指向字符数组的指针)时,它将其解释为以 null 结尾的字符串。由于在空终止符之前遇到字符“6”,因此仅打印子字符串“56”。

综上所述,字符数组“456”上的指针算术有效地跳过了第一个字符“4”并打印剩余的数字,给出输出“56。”

以上是为什么 C 中“456”1 输出“56”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn