gpt4 book ai didi

C++ 可能的编程之谜?

转载 作者:太空狗 更新时间:2023-10-29 19:43:10 26 4
gpt4 key购买 nike

#include <iostream>

using namespace std;

int main()
{
int loop = 0;
int Pass = 0;
int guess = 0;
cout << "Write In A 4 Digit Number!";
cin >> Pass;

while (loop == 0)
{
guess = guess + 1;

if (Pass == guess)
{
cout << "Your number is" + guess;
}

}
return 0;
}

这个神秘代码给我随机输出。这是一个猜测你输入的数字的程序。相反,当你输入一个随机数并按下回车键时,它会给你错误和 YF 之类的东西。通过测试代码自己尝试一下。如果您输入 1 并按回车键,您将打印出我们的号码。

  1. 我们的号码是
  2. 你的号码是
  3. r 号是
  4. 号码是
  5. 号码是

还有一些更奇怪的,比如如果你输入 666 你会得到:e::_S_normalize_catory not found 如果你输入 333 ☻ 会打印出来。

还有很多。有些数字是空白的,有些则不是。

谁能告诉我为什么会这样!

关闭:感谢您帮助我。我现在关闭它。您仍然可以聊天!

最佳答案

你需要改变

cout << "Your number is" + guess;

cout << "Your number is " << guess;

在 C++ 中,将数字添加到字符串文字不会将数字转换为字符串;它完全做其他事情(指针算术)。

有关 C 和 C++ 中指针算法的背景资料,请参阅 Everything you need to know about pointers in C (特别是 last section about strings )。

你的程序打印出有趣的字符串的原因是,一旦 guess 变得足够大,"Your number is"+ guess 指向结束后的一些内存字符串文字,然后程序打印出该内存中的任何内容。 (从技术上讲,您处于 undefined behaviour 的领域,因此您的程序可以合法地以各种奇怪的方式运行。)

关于C++ 可能的编程之谜?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39846498/

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