下面的代码正在打印错误输出,用于一些值的同时正确的其他人。 例如输出为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 –