对字符串和整数的 cout 运算符行为感到困惑
Confused about the cout operator behavior with string and int
我运行这个特定的代码
using namespace std;
int main()
{
cout<<(3 + "Hello World");
return 0;
}
输出是
llo World
我很困惑为什么会得到这个输出,谁能解释一下。
“Hello World”是一个数组。当您使用数组的值时,它会隐式转换为指向第一个元素的指针 - 即在本例中指向字符 'H' 的指针。当您将整数 N 添加到指针时,结果是指向数组的第 N 个下一个兄弟元素的指针。在这种情况下,“Hello World”+ 3 是指向第二个 'l' 字符的指针。当您将指向字符的指针插入字符流时,它会从指向的元素开始打印数组的内容,直到空终止符。
我运行这个特定的代码
using namespace std;
int main()
{
cout<<(3 + "Hello World");
return 0;
}
输出是
llo World
我很困惑为什么会得到这个输出,谁能解释一下。
“Hello World”是一个数组。当您使用数组的值时,它会隐式转换为指向第一个元素的指针 - 即在本例中指向字符 'H' 的指针。当您将整数 N 添加到指针时,结果是指向数组的第 N 个下一个兄弟元素的指针。在这种情况下,“Hello World”+ 3 是指向第二个 'l' 字符的指针。当您将指向字符的指针插入字符流时,它会从指向的元素开始打印数组的内容,直到空终止符。