gpt4 book ai didi

C++ 警告 C4244 'return' : conversion from 'double' to 'int' , 可能丢失数据 Visual Studio 2015

转载 作者:行者123 更新时间:2023-11-28 02:13:50 26 4
gpt4 key购买 nike

C++ 新手,遵循教程并尝试对其进行扩展。我的程序可以编译,但我在第 23 行收到错误“警告 C4244:‘return’:从‘double’到‘int’的转换,可能丢失数据”:end: return(n1); 编译时这意味着我的计算器结果不正确,忽略小数位并将所有内容视为整数。除了我专门使用的 1 之外,我在我的 int 代码中找不到任何实例。根本没有 double 应该转换。任何人都可以看看,让我知道我哪里出错了吗?我曾尝试将我当前的 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:

关于C++ 警告 C4244 'return' : conversion from 'double' to 'int' , 可能丢失数据 Visual Studio 2015,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34714964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com