大家好,欢迎来到IT知识分享网。
最近在学习C语言.写了一点代码.感觉程序代码都是对的,编绎也通过了,然而结果却总不是正确的.找了老半天,忽然感觉pow()这个函数有点怪.是数学库里的一个函数.前面没加
#include
把它加上去了.结果就OK了.
然后我就很奇怪
1.为什么没加#include 也能编绎通过?
2.没加#include 中为什么使用pow()也能得出一个值?
于是,我实验一下.
实验一:
main()
{
double z;
z=pow(10,5);
printf(“%lf/n”,z);
}
输出结果:
285.000000
实验二:
#include
main()
{
double z;
z=pow(10,5);
printf(“%lf/n”,z);
}
输出结果:
100000.000000
正确结果.
为了防止是实验一的pow(10,5)不起作用,而只是变量z由于没有初始化,只是随机指向一个内存地址.于是我又做了一个实验,把z初始化.
实验三:
main()
{
double z=0.0;
z=pow(10,5);
printf(“%lf/n”,z);
}
输出结果:
285.000000
为了再确定实验三的结果,,我又把Turboc2关了再开起,再运行一下实验三.结果还是一样.
通过实验三,重新编绎,结果都是一样,都是一个固定值285.000000.
然后,我把pow(10,5)中的参数该一下,再做实验
实验四:
main()
{
double z=0.0;
z=pow(10,4);
printf(“%lf/n”,z);
}
输出结果:
285.000000
把第二个参数改成1,2,3,4.结果都一样.
不过,当我把参数改成浮点数时,如5.0突然结果变了
实验五:
main()
{
double z=0.0;
z=pow(10,5.0);
printf(“%lf/n”,z);
}
输出结果:
33.000000
突然感觉是不是pow()的两个参数都必须是浮点数才能不用#include 就用算出正确结果,于是做了实验六
实验六:
main()
{
double z=0.0;
z=pow(10.0,5.0);
printf(“%lf/n”,z);
}
输出结果:
255.000000
还是错误的结果.无语了…
突然想到是不是pow()有像JAVA一样有函数重载.定义不同的参数,就变成一个完全不一样的函数.于是上turboc2/include文件夹下去找math.h有关pow()的源代码.结果只发现函数的定义,没有源代码.上网查.结果说,pow()是用汇编来实现了…(不过,发现了一个好网站MSDN:http://msdn.microsoft.com/zh-cn/express/default.aspx以前只是听说但一直没使用,仔细看看,发现里面的内容都太NB了,全面)
然后,我又在想是不是turboc2编绎器的本身问题.又上网查了一下,查不到…
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/21217.html