[英]converting from int to long long
我試圖將我的程序從int轉換為long long,但是return參數似乎存在問題,因為XCode談到了int和long long之間的隱式轉換。
#include <iostream>
using namespace std;
int potenzieren(long long basis, long long exponent)
{
long long ergebnis = 1;
for (int i=0; i<exponent; i = i+1)
{
ergebnis = ergebnis*basis;
}
cout << basis << " hoch " << exponent << " = " << ergebnis << "\r";
return ergebnis;
}
int main()
{
cout << "Programm zum Potenzieren.\r";
long long a=0;
long long b=0;
cout << "Basis?:";
cin >> a;
cout << "Exponent?: ";
cin >> b;
potenzieren(a,b);
}
謝謝你的幫助。
將以下函數的返回類型更改為long long。 出現此錯誤的原因是在'potenzieren'函數中將返回類型從long long隱式轉換為int會導致數據丟失。
另外,請將“ i”設置為long long(否則,如果指數超出int范圍,則for循環可能永遠不會結束)
long long potenzieren(long long basis, long long exponent)
{
long long ergebnis = 1;
for (long long i=0; i<exponent; i = i+1)
{
ergebnis = ergebnis*basis;
}
cout << basis << " hoch " << exponent << " = " << ergebnis << "\r";
return ergebnis;
}
該函數仍然返回一個int
:
int potenzieren(long long basis, long long exponent)
{
long long ergebnis = 1;
for (int i=0; i<exponent; i = i+1)
{
ergebnis = ergebnis*basis;
}
cout << basis << " hoch " << exponent << " = " << ergebnis << "\r";
return ergebnis;
}
如果希望它long long
返回,則需要更改其返回類型:
long long potenzieren(long long basis, long long exponent)
{
long long ergebnis = 1;
for (int i=0; i<exponent; i = i+1)
{
ergebnis = ergebnis*basis;
}
cout << basis << " hoch " << exponent << " = " << ergebnis << "\r";
return ergebnis;
}
另外,如果您確實想返回一個int
並且確定不會導致溢出,則可以通過以下方式將long long
顯式轉換為int
:
return static_cast<int>(ergebnis);
這樣,編譯器將知道這就是您想要的,並且不再警告您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.