1 / 88

基本資料型態

3. 基本資料型態. 能盡物之性,則可以贊天地之化育。 可以贊天地之化育,則可以與天地矣。 《 中庸 ﹒ 第二十一章 》. 基本資料型態. 3.1  整數和浮點數 3.2  變數和常數 3.3  算術運算 3.4  標準數學函數的運算 3.5  邏輯值及其運算 3.6  字元與字串 3.7  位元處理運算. C++ 的資料型態. 3.1 整數. 整數 (integer values) 是所有不具小數點的數值。例如: 6 -3728 0 +248571 -12 +0 005 4L.

Download Presentation

基本資料型態

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3 基本資料型態 能盡物之性,則可以贊天地之化育。可以贊天地之化育,則可以與天地矣。 《中庸﹒第二十一章》

  2. 基本資料型態 • 3.1 整數和浮點數 • 3.2 變數和常數 • 3.3 算術運算 • 3.4 標準數學函數的運算 • 3.5 邏輯值及其運算 • 3.6 字元與字串 • 3.7 位元處理運算

  3. C++ 的資料型態

  4. 3.1 整數 • 整數 (integer values) 是所有不具小數點的數值。例如: 6-37280+248571-12+00054L

  5. long int、8進位整數、16進位整數和 unsigned int (不加正負號的整數) 48U // unsigned int 75UL // unsigned long 372L // long 75l // long (不建議使用,因為l和 1不易區分) 012 // 128 = 10 0x12 // 1216 = 18

  6. 程式 Int.cpp

  7. 程式 Int.cpp 執行結果

  8. 浮點數(floating point numbers) • 帶有小數點的數值。 • 浮點數的例子如下: 36.0-7.382+3.92L0.00+4.03.7f3.7F

  9. 浮點數的指數表示法 (exponential notation) • e為exponent的縮寫,可以寫為E或e。

  10. float 和 long double • 例如: 4.7 // double 48.0F // float 48.0f // float 3.75L // long double 4.26e12 // double 4.26e+12L // long double (+號可以省略) 4.26E-12 // double

  11. 程式 Float.cpp

  12. 程式 Float.cpp 執行結果

  13. 基本數值資料型態的實際適用範圍及有效位數

  14. 3.2 變數和常數 • 變數 (variables) • 常數 (constants) • 所有的變數和常數都需要經由宣告 (declaration) 才能取用。

  15. 變數的宣告 • 賦予它一個名稱,並指定其所屬的資料形態。 • 例如: Int Age; float Height; • 上面這兩個敘述同時也完成了Age和Height兩個變數的定義 (definition)。

  16. 變數的定義 • 在記憶體內確實配置足夠容納變數的記憶空間。 • 對於變數和常數而言,宣告通常也附帶完成了定義。

  17. 宣告敘述與記憶體空間的對應關係

  18. short 和 long • 除了關鍵字int用來指定整數的資料型態外,short和long分別用來代表「短的整數資料」和「長的整數資料」。例如: long int Ia; long Ib; short int Ic; short Id;

  19. float 和 double • 單精確度的浮點數和雙精確度的浮點數分別以 float 和 double 這兩個關鍵字宣告。例如: float Fa; // Fa 為單精確度的浮點數 double Db; // Db 為雙精確度的浮點數

  20. 程式 Average.cpp 執行結果

  21. 多重宣告 (multiple declarations) • float a, b; • 相當於下列二式: float a; float b;

  22. 變數c的宣告和初始化 • float c = 5.6;

  23. 常數(constant) 代號的用途 1.避免重複直接寫出數值,以減少輸入的錯誤。 2.可以只修改一處定義,就能同時改變程式中所有使用這個值的地方。

  24. 常數的例子 • const double TaxRate = 0.17; • const float Inch2Meter = 0.024; • const int Max = 1024;

  25. 常數 • 一旦被宣告為常數,則不能再是lvalue (左值),其內容不能更改。譬如: const int Max = 1024; Max = 2048;// 錯誤!常數不可以再給予             新值。

  26. 算術運算子(arithmetic operators) • 共有7個:

  27. 表達式(expression) • 將常數、變數或函數以各種運算子聯結起來的組合: x < 15.8 x = y + sin( z ) ( x + y ) * 0.8 – z

  28. 敘述句(statement) • C++ 程式裡面最小的可執行單元。例如: x = a + b * sin( c ) ; ; b++; y = ( b > 10.0 ) ; x = c + 5.0 ;

  29. 敘述句的規範 (1/2) 1.以分號當結尾。 2.可以任意放置。例如: x = a + b * ( c + 6.5 ) + c * 105.8 – 4.0; 與 x = a + b * ( c + 6.5 ) + c * 105.8 – 4.0;

  30. 敘述句的規範 (2/2) 3.各個數值或變數名稱與運算子 (operator) 之間的空隔可有可無。例如 x=a+b; 與 x = a + b;

  31. 指派敘述 (assignment statement) • 有等號的敘述: Value = expression; • 例如: x = a + b; 指派敘述的處理步驟 (1) 算出expression的值。 (2) 將此值放在Value裡面,成為它的內容。

  32. 運算元 (operand) 和運算子 (operator) • 在x * y這個運算裡,x和y稱為運算元 (operand),「*」稱為運算子 (operator)。

  33. 一元運算子 (unary operator) 和二元運算子 (binary operator) • 作用於兩個運算元之間的運算子稱為二元運算子,像 *, / 和 %這類的運算子都是。 • 如果只作用於一個運算元上,則稱為一元運算子,例如負號。

  34. 運算符號「-」 • 「-」既是一元運算子也是二元運算子。例如 -x用來計算x的負值。然而 x – y卻是用來計算x和y的差值。我們將它視為兩個不同的運算子。

  35. 算術運算的優先權和結合規則 • 與我們熟悉的「先乘除後加減」規則相吻合,也就是說: 6 + 4 * 8 % 3 * 6 - 5 與 6 + ((4 * 8) % 3) * 6 - 5 的計算順序是一樣的。

  36. 運算子的優先順序和結合關係 • 在同一個敘述內,當運算子的優先權相同時,則依照從左至右的順序處理。

  37. 整數的除法 • 在C++ 中,整數相除時,其餘數被直接捨棄。例如 1/2 得到 0 3/7 得到 0 15/2 得到 7

  38. 餘數運算子 (modulus operator) % 1%2 得到 1 3%7 得到 3 15%2 得到 1

  39. 累加運算子 (increment operator) 和累減運算子 (decrement operator)

  40. 當 ++ 或 -- 寫在操作元之前 (稱為字首,prefix)時 • M = ++i; 相當於 i = i + 1; M = i;

  41. 當 ++ 或 -- 寫在操作元之後 (稱為字尾,postfix) 時 • M = i++; 相當於: M = i; i = i + 1;

  42. 累加和累減運算 • M = i++ * 5; 相當於 M = i*5; i++; 而 M = ++i * 5; 則相當於 i++; M = i*5;

  43. 指派運算子 (assignment operators)

  44. rvalue 和 lvalue 1. rvalue和lvalue分別為right value (右值) 和left value (左值) 的縮寫。 變數的值或表達式的計算結果稱為rvalue,因為它可以置於指派操作子等號「=」的右側。rvalue本身不可以被指定數值。 2. 經由compiler規劃過的記憶位置所儲存的內容稱為lvalue,因為它通常放在指派操作子的左側。它可以被指定存入某個數值。 3. 指派敘述可以視為把rvalue置入lvalue的操作。 例如,下列兩個敘述: 5 = x ; ( b = 10.0 ) = a ; 都是錯誤的敘述。

  45. 資料型態間的轉換- 程式 Convert.cpp 執行結果

  46. 隱性資料型態轉換(implicit type conversions)

  47. C++ 敘述的隱性資料型態轉換規則 1.如果混合不同的資料型態,則計算結果以最精確的資料型態為準。 2.當所有的運算元都具有相同的資料型態,計算結果不做型態轉換。 3.如果是指派運算 (assignment operation),則依lvalue的資料型態儲存。

  48. C++ 的兩種顯式資料型態轉換語法 • (資料型態) 變數名稱;資料型態 (變數名稱); • 例如 x = float (a) + 3.8f ; 或是 x = (float) a + 3.8f ;

  49. sizeof () 運算子 • 可以用來顯示資料所使用的記憶空間有幾個位元組。運算子sizeof()括號內的引數可以是資料,也可以是資料型態。

  50. 程式 Size.cpp 檢查資料型態的長度以及隱式資料轉換的效果

More Related