gpt4 book ai didi

c++ - 这个 C++ 程序中发生了什么?

转载 作者:太空宇宙 更新时间:2023-11-04 14:34:19 26 4
gpt4 key购买 nike

考虑以下程序:

#include <iostream>
int main()
{
int num=345;
std::cout<<"num " + num<<'\n';
}

当我运行这个程序时,它显示 F 作为输出。如何?这里是不是在进行指针运算?如果我使用 - 符号而不是 +,则会出现空白输出。

最佳答案

字符串文字 "num "const char[5],它会衰减到您要向其添加偏移量的 const char*

下面的一段代码等同于你正在做的事情:

#include <iostream>
int main()
{
int num = 345;
const char* c_str = "num ";
std::cout << c_str + num << '\n';
}

答:您有未定义的行为,因为您正在访问数组范围之外的内存位置。你违反了内存安全。

因为 cout 只有在找到 c 字符串的 '\0' 时才会停止打印,所以您可能会一直打印直到找到为止。您不知道该值下一次发生的时间,因此您有未定义的行为,如 A 中所述。

关于c++ - 这个 C++ 程序中发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32742405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com