代码不会cin / uninitialized局部变量

时间:2014-09-29 23:51:52

标签: c++ initialization cin

到目前为止,我对此代码的唯一问题是C不会初始化。我知道如果我做了degree_type ==" C"它不会编译,因为我无法将int转换为字符。这段代码究竟出了什么问题?

#include <iostream>   
using namespace std;
int main()
{
char C; 
double degree;
int degree_type;

cout << "What's the Degree type?: ";
cin >> degree_type;

if (degree_type == C)
{


cout << "What's the Temperature:? ";
cin >> degree;

cout << "Your Degrees in Celsius is, " << 9 / 5 * degree + 32 << " degrees fahrenheit." << endl;
}

else
{

cout << "What's the Temperature:? ";
cin >> degree; 

cout << "Your Degrees in Fahrenhait is, " << (degree - 32) * 5 / 9 << " degrees Celsius." <<        endl;
}
return 0;

}

1 个答案:

答案 0 :(得分:4)

在使用cin阅读字符之前,您(或,在您更改问题之前)。当您读取一个字符时,下一个字符(Enter按键)将保留在输入缓冲区中等待读取。下次您从cin读取(获取温度)时,它会立即看到前一个输入的Enter按键,不允许您键入任何内容。

改为使用getline

std::string str;
std::getline(std::cin, str);
degree_type = str.at(0);

完成后,测试degree_type = C没有按照您的想法执行,原因有两个:

  1. 单个等于=赋值。要进行比较,请使用==

  2. C是变量的名称。对于字符 C ,请使用'C'