c语言指数pow,C语言中的指数函数pow()问题
最近在學習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編繹器的本身問題.又上網查了一下,查不到...
總結
以上是生活随笔為你收集整理的c语言指数pow,C语言中的指数函数pow()问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++语言编辑简单的计算器,c++编写简
- 下一篇: android 地图相册,时光地图相册