【发布时间】:2022-01-01 08:50:05
【问题描述】:
我正在编写一个简单的 C++ 程序,它应该将整数数组的所有元素组合成一个数字。 例如。 {4,5,6} --> 应该是 456。但是我的输出比原始数字少一。即我得到 455 而不是 456。有时我的程序运行良好,有时却不行。有人可以向我解释导致这种不可预测行为的原因吗?谢谢!!
请看我的代码:
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
int main()
{
int A[5] = {4,5,6,7,8};
int lengthA = 5;
int num = 0;
for(int x = 0; x < lengthA; x++)
{
num = A[x]*pow(10,lengthA-1-x) + num;
}
printf("%d\n", num ); // My O/P is 45677
}
【问题讨论】:
-
pow,在这里,是一个糟糕的选择。它返回一个double,在此代码中被截断为int,可能是“错误的”。请注意,您可以仅使用整数类型变量将 1 乘以 10 多次获得 10 的幂。