【发布时间】:2018-09-26 14:51:24
【问题描述】:
我是编码新手,想知道为什么我的代码没有按照我的预期运行。我将代码构建为一个培训计划,以帮助我练习所学的知识。当我注释掉第 19 - 23 行(多行注释部分)时,代码似乎可以正常工作,但当我没有注释时,它开始出现意外行为。
#include <iostream>
int askUserNumber ()
{
std::cout << "Please input a number: " << std::endl; //ask user to input number
int userNumber; //define integer to store input
std::cin >> userNumber; // get input from user
return (userNumber); // return input to caller
}
void printUserNumber (int userNumber)
{
std::cout << "Your number input was: " << userNumber << std::endl; //print input to user screen
}
int main ()
{
/*
std::cout << "Please input your name: " << std::endl; // ask user name
int userName; // variable to store user name
std::cin >> userName; // get user name
*/
printUserNumber(askUserNumber()); // call to askUserNumber to get user input to print to screen
return(0);
}
结果(未注释掉代码):
请输入您的姓名:
科里
请输入一个数字:
您输入的号码是:“someGarbageNumber”
它不允许我在该部分输入数字,它只是打印出一个随机数。
结果(注释掉代码):
请输入一个数字:
7
您输入的数字是:7
这次运行完美,没有任何问题。我不明白为什么当 printUserNumber(askUserNumber()) 的函数调用达到打印“请输入一个数字:”和不允许我输入一个。感谢您的任何回复。我希望我以良好的格式写了我的问题,并以清晰直接的方式解释了我的问题。希望结果部分也将允许一些清晰度。期待解决方案再次感谢。
【问题讨论】:
-
userNumber是一个int。您不能将文本字符串存储在int中("Corey"不是int)。当您获得下一个输入时,文本仍在输入缓冲区中,但仍无法读取为int。 -
当提示您输入您的姓名时,您是否真的输入了您的姓名?这行不通,因为您正试图将其读入
int变量int userName。只有可解析为 int 的“名称”才有效。 -
将非数字字符串读入
int失败,因此int保持未初始化状态(即包含垃圾)。
标签: c++ parameter-passing user-input