下面的代碼正在打印錯誤輸出,用於一些值的同時正確的其他人。 例如輸出爲699838110是2938640281442109880而它應該是2938640272852175288限制數據類型
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=0; i<n; i++)
{
int d;
cin>>d;
if(d==1)
{
cout<<1<<endl;
}
else
{
long long int y=pow(d,2);
long long int x=8+6*y-12*d;
cout<<x<<endl;
}
}
return 0;
}
是因爲數據類型長長整型的限制這種情況的發生? 如果不是定義x,我直接在我的cout語句中寫入8 + 6 * d * d-12 * d,然後生成垃圾值。這是否意味着cout聲明有限制?如果是,那麼這個限制是什麼,或者是由計算中涉及的變量的數據類型決定的?
首先,這裏沒有足夠的信息能夠理解你在找什麼;什麼是問題?其次,你的問題可能像「x = 8 + 6 * y-12 * d」中的PEMDAS一樣簡單。你是否在任何地方遺漏括號? –
可能相關:http://stackoverflow.com/a/15256009/4859885 –