【发布时间】:2014-03-29 22:22:27
【问题描述】:
编译以下程序后,我得到输出“2346”,但预期为“2345”。
#include<math.h>
#include<iostream.h>
int nr_cif(int a)
{
int k=0;
while(a!=0)
{
a = a/10;
k++;
}
return k;
}
void Nr(int &a){
int k = nr_cif(a);
a = a % (int)pow(10,k-1);
}
int main()
{
int a = 12345;
Nr(a);
cout<<a;
}
调试后,我注意到它在评估后出现错误: a = a % (int)pow(10,k-1)。为什么会在这里断掉?
【问题讨论】:
-
使用
<iostream>,而不是<iostream.h>。<math.h>会比<cmath>好一点。 -
这能回答你的问题吗? Why does pow(5,2) become 24?