gpt4 book ai didi

C++程序为初始化变量提供垃圾值

转载 作者:行者123 更新时间:2023-12-01 14:19:59 26 4
gpt4 key购买 nike

我刚刚开始使用 C++ 并编写非常基本的程序来理解基础知识。我编写了一个简单的代码来通过用户输入接收字符串和整数(下面附有代码)。当我输入 35 Tom(故意以错误的顺序输入以查看类型敏感性)时,我得到输出 Wow 35!!!没想到你0岁了,如下图:

enter image description here

我不明白为什么我在初始化整数变量 int age = -1; 时得到一个垃圾值。我期待 哇 35!!!我没有意识到你是-1岁作为输出。

我的想法是,对于一些大型的复杂程序,可能需要将初始化值作为输出来帮助识别逻辑错误。我只是对为什么我没有得到初始化值作为输出感到困惑?

下面附上完整的代码。

// Asking name and age a different way
#include "C:\Dev\cpp\headerFiles\std_lib_facilities.h"

int main()
{
cout << "Please enter your first name and age \n";

string name;
// Initializing the integer variable. If not done, this will have garbage value by default
int age = -1;

// Below statements equivalent to: cin >> name >> age;
cin >> name;
cin >> age;

cout << "Wow " << name << "!!! I didn't realize that you are " << age << " years old\n";
}

最佳答案

为什么它不起作用?C++ 中的代码在编译时不会同时读取所有行,而是逐行读取代码。由于您首先声明了“cin >> name”,它首先要求输入 string(35 可以是 int 或 string 两者),这就是它被接受 35 作为有效输入的原因。在此之后,您正在使用“cin>>age”,其中您将输入作为字符串,它不能作为 age 声明为 int,因此它像垃圾一样给出“0”。虽然,在这种情况下,这并不取决于你是否初始化了它,但在很多情况下,它确实取决于,所以初始化你的变量是一个好习惯。

如何修复??如果您不想更改您提供的输入 (35 Tom),请将代码更改为:

cin >> age
cin >> name

或者干脆

cin >> age >> name // If you are taking many inputs, it is a good habit

您可以做的另一件事是将输入更改为:

Tom 35

记住!!在 C++ 中询问或输入的顺序很重要。

关于C++程序为初始化变量提供垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63544431/

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