为什么我不能表达 10 次方 10

why can't I express 10 power 10

本文关键字:次方 不能 为什么      更新时间:2023-10-16

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

最后,我将类型从 int 更改为__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);
}

我的预期答案是 10000000000,但操作结果是1410065408

怎么了?

您正在尝试将__int64转换为无法在cout语句中保存10000000000等值的int

不要混淆__int64(保存 8 字节数据(和int(保存 4 字节数据(。只需删除转换int()即可。

#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;
}

问题是数据类型的范围。通过更改为"long long int",您将获得预期的答案 10000000000。

对于大整数,请使用 powl(a,b( 而不是 pow(a,b(。