[英]warning C4244: 'argument' : conversion from 'double' to 'const int', possible loss of data
[英]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.