c++小发现

当运行以下c++代码

1
2
3
4
5
6
7
#include<iostream>
using namespace std;
int main()
{
cout<<"abc"+1<<endl;
return 0;
}

结果将会是输出”bc”:
原因是”abc”本质是一个字符串字面量是const char[]类型,会退化为const char*的指针类型,也就是该字符串的首地址,而+1会加一个char的基类型,即1字节,也就是将这个地址+1,于是指针就从字符”a”上移动到了字符”b”上,而cout对字符型地址的输出逻辑是从该地址开始一直输出知道遇到尾零结束,所以将从字符”b”开始输出到”c”结束。
test


c++小发现
http://example.com/2025/03/30/c-小发现/
作者
John Doe
发布于
2025年3月30日
许可协议