0
C++新手,遵循教程並嘗試擴展它。我的程序編譯但我收到錯誤「警告C4244:'返回':從'double'轉換爲'int',可能丟失數據」在第23行: end: return(n1);
編譯時意味着我的計算器結果不正確,忽略十進制把所有東西都當作一個整數來處理。除了我特別使用的1之外,我在我的int代碼中找不到任何實例。沒有雙打應該轉換。任何人都可以請看看,讓我知道我錯了什麼地方?我試圖將當前的int變成double,並且還使用各種其他格式化樣式無濟於事。C++警告C4244'return':從'double'轉換爲'int',可能會丟失數據Visual Studio 2015
#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);
}
你的'getNumber'函數返回一個'int',但你給它一個'double'。將'double'分配給'int'會發生什麼?您可能會丟失數據。如果將'45.23'分配給'int',則只能得到'45'。 '0.23'將會丟失。而且,「goto」完全不需要。 – DeiDei
goto's總是在那裏時有什麼意義呢? –