首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我试着运行这段代码,但是它总是给出一个其他条件的输出。

我试着运行这段代码,但是它总是给出一个其他条件的输出。
EN

Stack Overflow用户
提问于 2022-06-06 06:50:09
回答 6查看 70关注 0票数 0

字符串"Fahrenheit"应该给出第一个if语句的输出,但是它会释放else语句的输出。

代码语言:javascript
复制
#include <iostream>

using namespace std;

class Temperature {
public:
    int temp;
    string unit;

    Temperature(int atemp, string aunit) {
        atemp = temp;
        aunit = unit;
    }

    void to_fahrenheit() {
        if (unit == "Fahrenheit") {
            cout << ((temp*1.8) + 32) << " Fahrenheit";
        } else if (unit == "Celsius") {
            cout << ((temp-32)*5/9) << " Celsius";
        } else {
            cout << "Converts only Fahrenheit to Celsius or vice versa.";
        }
    }
};

int main()  {
    Temperature temp1 (10,"Fahrenheit");
    temp1.to_fahrenheit();
    return 0;
}
EN

回答 6

Stack Overflow用户

发布于 2022-06-06 06:55:16

你的作业错了

代码语言:javascript
复制
Temperature(int atemp, string aunit)    {
    atemp = temp;
    aunit = unit;
}

应该是

代码语言:javascript
复制
Temperature(int atemp, string aunit)    {
   temp = atemp;
   unit = aunit;
}

这是一个逻辑错误,而不是语法错误。

编写此代码的最佳方法是使用初始化程序列表。

代码语言:javascript
复制
Temperature(int atemp, string aunit) : temp(atemp), unit(aunit) {
}

这样就不可能犯你所犯的错误了。

票数 1
EN

Stack Overflow用户

发布于 2022-06-06 06:56:02

这里的问题是如何正确地分配变量。

代码语言:javascript
复制
 Temperature(int atemp, string aunit)    {
temp = atemp;
unit = aunit;
}

在C++中,=运算符遵循从右到左的分配。

票数 0
EN

Stack Overflow用户

发布于 2022-06-06 06:56:51

您的代码在这一行是错误的。

代码语言:javascript
复制
atemp = temp;
aunit = unit;

必须:

代码语言:javascript
复制
temp = atemp;
unit = aunit;

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72514004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档