我将在下面输入我的代码。作为免责声明,我是一个完整而彻底的新手,我知道我的代码非常严格,我应该创建函数......现在我保持简单。
我的问题是我的if语句将运行" if"部分,但它不会运行"否则如果"部分。任何帮助表示赞赏。
我的代码:
// Coding Challenges.cpp : Defines the entry point for the console
application.
//
#include "cstdlib"
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
char responses(char user_response)
{
return user_response;
}
int main()
{
char responses;
char user_response;
cout << "Welcome to the tempature conversion program." << endl;
cout << "Please type F to convert from farenheit to celcius or C for celcius
to farenheit." << endl;
//getchar(user_response);
cin >> user_response;
getchar();
cout << "You entered: " <<user_response << endl;
switch (user_response) {
case 'F':
cout << "You have chosen to convert from farenheit to celcius." << endl;
break;
case 'C':
cout << "You have chosen to convert from celcius to farenheit." << endl;
break;
default:
cout << "Woops. It Looks like you haven't entered correctly." << endl;
break;
}
getchar();
cout << "Code should have ran " << endl;
getchar();
cout << "You entered: " << user_response << endl;
getchar();
if (user_response = 'F') {
double f_val = 0;
cout << "Please enter the value of farenheit you would like to convert:
" << endl;
cin >> f_val;
cout << f_val;
getchar();
getchar();
} else if (user_response = 'C') {
double c_val = 0;
cout << "Please enter the value of celcius you would like to convert: "
<< endl;
cin >> c_val;
cout << c_val;
getchar();
getchar();
} else {
cout << "Error" << endl;
return 0;
getchar();
getchar();
}
getchar();
getchar();
return 0;
}
忽略我明显用于测试/调试的任何代码。
谢谢,
泰德
答案 0 :(得分:1)
您没有将user_response
与其中的任何字符进行比较,因为您使用的是赋值运算符(=)而不是相等的比较运算符(==)。所以你总是输入你的第一个条件,因为你只是测试user_response
是否与0不同,这就是你刚刚给它分配“F”的情况。在测试值时,您必须使用==而不是=。
if (user_response == 'F') { // == operator there, and not =
double f_val = 0;
cout << "Please enter the value of farenheit you would like to convert:
" << endl;
cin >> f_val;
cout << f_val;
getchar();
getchar();
} else if (user_response == 'C') { // Same there
double c_val = 0;
cout << "Please enter the value of celcius you would like to convert: "
<< endl;
cin >> c_val;
cout << c_val;
getchar();
getchar();
} else {
cout << "Error" << endl;
return 0;
getchar();
getchar();
}
答案 1 :(得分:1)
你的行
if (user_response = 'F') {
相当于
user_response = 'F';
if (user_response) {
相当于
user_response = 'F';
if (user_response != 0) {
您刚刚将user_response
设置为&#39; F&#39;它显然不是0,所以你总是得到if-path。
如果你想比较你需要写
if (user_response == 'F') {
根据编译器的不同,您可以通过设置编译器的警告级别(总是一个好主意)并仔细阅读警告来捕获这些错误。
答案 2 :(得分:0)
你不是在发誓,而是在这里指定:
if (user_response = 'F')
^------ This is assignment
v------ This is comparison
if (user_response == 'F')
赋值的值可以转换为bool
并生成true。大多数编译器都会发出警告。使用编译器错误捕获此类拼写错误的方法是将其写为:
if ('F' = user_response) // -> compiler error !!
if ('F' == user_response) // -> ok