到目前为止,我对此代码的唯一问题是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;
}
答案 0 :(得分:4)
在使用cin
阅读字符之前,您(或是,在您更改问题之前)。当您读取一个字符时,下一个字符(Enter按键)将保留在输入缓冲区中等待读取。下次您从cin
读取(获取温度)时,它会立即看到前一个输入的Enter按键,不允许您键入任何内容。
改为使用getline
:
std::string str;
std::getline(std::cin, str);
degree_type = str.at(0);
完成后,测试degree_type = C
没有按照您的想法执行,原因有两个:
单个等于=
是赋值。要进行比较,请使用==
。
C
是变量的名称。对于字符 C ,请使用'C'
。