You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何C++中int与字符串经auto相加后输出为ello?求技术解析

代码输出"ello"的原因解析

我们逐行拆解这段C++代码的行为:

  1. auto b = "Hello";:这里的"Hello"是C风格字符串字面量,实际类型为const char*——也就是指向字符串首字符'H'的指针。
  2. auto a = 1;:变量a被推导为int类型,值为1。
  3. auto c = a + b;:这是指针算术运算。由于b是指向char的指针,和整数a相加时,指针会向后偏移a * sizeof(char)个字节。因为char的大小是1字节,所以指针会从指向'H'的位置后移1位,指向原字符串的第二个字符'e'。
  4. std::cout << c << "\n";:cout输出const char*类型时,会从指针指向的位置开始逐个输出字符,直到遇到字符串结束符'\0'。因此从'e'开始输出,最终得到ello。

需要注意:这种指针偏移写法存在风险,若偏移量超过字符串实际长度,会引发内存越界访问,属于C++中的未定义行为,只有偏移量在有效范围内时,结果才是可预期的。

内容的提问来源于stack exchange,提问作者rishi pandey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 12:18:25