/*** sqrt3.c --- sqrt(3.0) by tsaiwn@cs.nctu.edu.tw *** *** **************************/ #include #include // 若不 #include 則有些系統會誤會 sqrt 傳回整數! 答案會錯誤! int main( ) { printf("sqrt(3.0)=%f\n", sqrt(3.0)); //若寫 sqrt(3)有些系統答案錯 printf("test sqrt(3)=%f\n", sqrt(3)); printf(" Hit ENTER key..."); getchar( ); return 0; } /*** C:\testc>gcc sqrt3.c C:\testc>a.exe sqrt(3.0)=1.732051 test sqrt(3)=1.732051 Hit ENTER key... *** 請把 #include 去掉然後再測試看看! ? *** 你將發現程式成仍可以正常編譯並執行! 但是.. *** 但是, 答案卻可能是錯的! 這是因為照 C 的規定, 若用到某函數但不知道它的"樣子" .. 就是說不知道接受何種參數? 也不知道會傳回啥碗糕? 則會自動假設會回傳整數, 參數則照你給的! 但這樣對於 double sqrt(double) 卻是錯的! 所以會被誤會(如實數被誤會成整數或相反)導致答案錯誤! (有些編譯氣會自動#include 所以仍會是正確的:-) ************************/