伊莉討論區

標題: 函數和abs的問題 [打印本頁]

作者: cynthialar    時間: 2010-1-28 09:51 AM     標題: 函數和abs的問題

本帖最後由 cynthialar 於 2010-2-2 11:53 AM 編輯

我想問一下abs不是絕對值得關係嗎?
那麼以下程式,是否可以幫我解答一下呢?
  1. #include <iostream>
  2. using namespace std;
  3. int abs(int a);
  4. float abs(float a);
  5. double abs(double a);
  6. int main()
  7. {
  8.     int a = -5, b = 3;
  9.     float c = -2.4f, d = 8.4f;
  10.     double e = -3e-9, f = 3e6;
  11.     cout << "a= " << abs(a) << endl << "b= " << abs(b) << endl;
  12.     cout << "c= " << abs(c) << endl << "d= " << abs(d) << endl;
  13.     cout << "e= " << abs(e) << endl << "f= " << abs(f) << endl;
  14.     system("pause");
  15.     return 0;
  16. }
  17. int abs(int a)
  18. {
  19.     cout << "int abs" << endl;
  20.     return (a > 0?a:-a);
  21. }
  22. float abs(float a)
  23. {
  24.       cout << "float abs" << endl;
  25.       return (a > 0?a:-a);
  26. }
  27. double abs(double a)
  28. {
  29.        cout << "double abs" << endl;
  30.        return (a > 0?a:-a);
  31. }
複製代碼

顯示結果""應""為:
int abs
int abs
a=5
b=3
float abs
float abs
c=2.4
d=8.4
double abs
double abs
e=3e-009
f=3e+006
---------------------------------------------------------

此段程式,我照著書上面打,但是我顯示的結果為:
---------------------------------------------------------
a=5
b=3
float abs
float abs
c=2.4
d=8.4
double abs
double abs
e=3e-009
f=3e+006
---------------------------------------------------------
為什麼會少了前面兩行呢?
還有,在float的部份,為什麼宣告c=-2.4f和d=8.4f之後顯示的結果卻沒有"" f ""的存在?那麼這個"" f ""不就沒有用處了嗎?
在double的部份就更難理解了,為什麼宣告e=-3e-9和f=3e6之後顯示結果卻是"" e=3e-009 ""和"" f=3e+006 ""?
e不是代表一個""字""嗎?為什麼是表示""10""的幾次方呢?
作者: whymejake    時間: 2010-1-28 02:25 PM

C 跟 D 的宣告後面的 f 代表這是 float point 值,不是數值的一部分,所以不會印出來
而 Double 的宣告與顯示
e = -3* 10^(-9)  所以 ABS(E) = 3*10^(-9)
f = 3*10^(6) 所以 ABS(F) = 3*10^(6)
你可能要先搞清楚 float , double 的宣告跟科學記號的寫法
作者: cynthialar    時間: 2010-1-28 05:46 PM

那為什麼e=3e-9是3e-009~
而f=3e6是等於3e+006~
卻不是f=3e+6等於3e+006呢?!~



回復 2# whymejake
作者: hst326    時間: 2010-1-28 06:40 PM

提示: 作者被禁止或刪除 內容自動屏蔽




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!