搜索
查看: 1730|回复: 2
打印 上一主题 下一主题

编译器bug

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-7 15:32:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
调用pow(a,b) 求幂函数时出错
当a=10 b=2时 函数返回99

自己编写函数
int pow1(int a,int b)
{
int i,n=1;
for(i=0;i<b;i++)
    n*=a;
return n;
}
能得到正确结果100

可以确定下是不是gcc核的问题

发布下调用pow函数时的出错程序:
#include <stdio.h>
int main()   
{
int num=0,a=0,n=0,m=0,l=0,b=0;
next:
printf("THE MathML is NUM=a+aa+aaa+aaaa+.....x\n");
printf("THE x IS pow(10,n-1)a+pow(10,n-2)a....pow(10,n-n)a\n");
printf("Enter a = ");
scanf("%d",&a);
printf("Enter n = ");
scanf("%d",&n);
for(l=1;l<=n;l++)
    {   
    for(m=0;m<l;m++)                    
        b+=pow(10,m)*a;        
    num+=b;
    b=0;
    }
printf("WHEN a = %d , n = %d , NUM = %d \n",a,n,num);
printf("********************\n\n");
num=0;
goto next;
while(1);
return 0;
}   


再发布下自己写pow1函数时,结果正确的程序:
#include <stdio.h>
int pow1(int a,int b)
{
int i,n=1;
for(i=0;i<b;i++)
    n*=a;
return n;
}
int main()   
{
int num=0,a=0,n=0,m=0,l=0,b=0;
next:
printf("THE MathML is NUM=a+aa+aaa+aaaa+.....x\n");
printf("THE x IS pow(10,n-1)a+pow(10,n-2)a....pow(10,n-n)a\n");
printf("Enter a = ");
scanf("%d",&a);
printf("Enter n = ");
scanf("%d",&n);
for(l=1;l<=n;l++)
    {   
    for(m=0;m<l;m++)                    
        b+=pow1(10,m)*a;        
    num+=b;
    b=0;
    }
printf("WHEN a = %d , n = %d , NUM = %d \n",a,n,num);
printf("********************\n\n");
num=0;
goto next;
while(1);
return 0;
}   



沙发
 楼主| 发表于 2012-9-7 16:29:56 | 只看该作者
我用gcc实验了下
没有问题

gcc的pow函数是在math.h的库中的 需调用math.h再pow
啊哈c的pow可以直接调用

应该是编译器本身问题
板凳
发表于 2012-9-7 18:21:28 | 只看该作者
啊哈C可以少打好几个头文件·  ·  ·
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表