繁体   English   中英

C ++警告C4244'返回':从'double'转换为'int',可能丢失数据Visual Studio 2015

[英]C++ Warning C4244 'return': conversion from 'double' to 'int', possible loss of data Visual Studio 2015

C ++的新手,紧随其后的教程并尝试对其进行扩展。 我的程序可以编译,但是在第23行出现错误“警告C4244:'return':从'double'到'int'的转换,可能丢失数据”: end: return(n1); 编译时表示我的计算器结果不正确,忽略了小数点后的位并将所有内容都视为整数。 除了我专门使用的1之外,在我的int代码中找不到任何实例。 没有任何双打应该转换。 谁能看看,让我知道我哪里出问题了吗? 我试图将当前的int值转换为double值,并且也尝试使用其他各种格式样式都无济于事。

#include "stdafx.h"
#include <iostream>
#include <cstdint>

using namespace std;

int getNumber(int16_t x)
{
    double n1{};

    if (x == 1)
    {
        cout << "First number: ";
        cin >> n1;
        goto end;
    }
    else if (x == 2)
    {
        cout << "Second number: ";
        cin >> n1;
        goto end;
    }
        end: return(n1);
}

int getOperator()
{
    char op{};
    cout << "Operator (+, -, *, /): ";
    cin >> op;

    return(op);
}

void printAnswer(double n1, char op, double n2)
{
    if (op == '+')
        cout << n1 << " + " << n2 << " = " << (n1 + n2) << '\n';
    else if (op == '-')
        cout << n1 << " - " << n2 << " = " << (n1 - n2) << '\n';
    else if (op == '*')
        cout << n1 << " * " << n2 << " = " << (n1 * n2) << '\n';
    else if (op == '/')
        cout << n1 << " / " << n2 << " = " << (n1 / n2) << '\n';    
}

int main()
{
    cout << "Please enter two numbers and an operator to perform a calculation." << endl;

    double n1(getNumber(1));
    char op(getOperator());
    double n2(getNumber(2));

    printAnswer(n1, op, n2);

    return(0);
}

警告消息非常清楚。 在您定义的用于获取数字的函数中,返回类型为int

    int getNumber(int16_t x)
 // ^^^

而实际上将double类型传递给return语句。

要摆脱警告,请修复函数返回类型:

    double getNumber(int16_t x)
 // ^^^^^^

附带说明:请不要使用goto ,尤其是在完全多余的情况下,请不要使用。 无论如何,所有代码路径都直接导致标签end:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM