在 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中文网其他相关文章!