C++ 为什么可以';我表示10次方10次方

C++ 为什么可以';我表示10次方10次方,c++,C++,我试图表示10次方10,但它不起作用,所以我认为问题在于数据类型的范围 最后,我将类型从int改为\uu int64,但它还不能工作 #include <iostream> #include <cmath> using namespace std; int main() { int a, r, n; __int64 d; cin >> a; // a=10 cin >> r; // r=10 c

我试图表示10次方10,但它不起作用,所以我认为问题在于数据类型的范围

最后,我将类型从int改为
\uu int64
,但它还不能工作

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int a, r, n;

    __int64  d;

    cin >> a; //  a=10
    cin >> r; //  r=10
    cin >> n; //  n=10

    d = a * pow (r, n - 1);

    cout << int(d);
}
#包括
#包括
使用名称空间std;
int main()
{
int a,r,n;
__int64d;
cin>>a;//a=10
cin>>r;//r=10
cin>>n;//n=10
d=a*pow(r,n-1);

不能使用powl(a,b)而不是pow(a,b)来表示大整数,就像您的例子一样。

您试图将
\uuu int64
转换为
int
,而
int
不能保存
cout
语句中的
1000000000
这样的值

不要混淆
\uuu int64
(保存8字节数据)和
int
(保存4字节数据)。只需删除转换
int()

\
使用名称空间std;
int main()
{
int a,n;
long long int d;//将类型更改为long long int
cin>>a;
cin>>n;//n=10
d=功率(a,n);

问题是你用
cout-In
将答案转换成
int
,这里有
std::int64\u t
,这是一种便携式的方法,可以获得64位有符号整数,而不是
\u int64
。另外,不要将浮点和int混合使用。使用for循环并乘以10,你也可以写1e10@FrançoisAndrieux否,所有带整数指数的重载。接受整数值的唯一重载也会在内部将值强制转换为浮点类型:7)一组重载或一个函数模板,用于1-3未涵盖的算术类型的所有参数组合。如果任何参数具有整数类型,则将其强制转换为
double
。如果任何参数是
long double
,则提升的返回类型也是
long double
,否则返回类型总是
double
long long int
不太可能大于
\uu int64
,而且64位整数肯定已经足够大了。您已经从
中删除了强制转换cout
这就是您得到预期结果的原因。谢谢先生我真的很感激,谢谢先生我真的很感激谢谢先生我真的很感激appreciate@Hamp但是一些知识分子否决了我的第一个答案,因为你的“答案”是错误的。它与战俘或战俘无关。问题在于
int(d)
整数不能存储如此大的数字的地方
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a,n;

    long long int  d; //change the type to long long int


    cin >> a;
    cin >> n; //  n=10

    d =  pow (a, n );

    cout << d;

}