close

在許多語言中變數並沒有什麼資料型態 (data type)之分, 只要您宣告了變數, 該變數可以儲存字串, 字元, 數字和浮點數. 但是在C++中 (C++系的語言也是), 變數是有類別之分, 如果嘗試將一個不同資料型態的數值指定給一個變數, 就可能會產生編譯器錯誤 (Compiler Error, 指在程式編譯時發生的錯誤) 或是 資料流失.

C++中的資料型態有很多, short, long, int, char, float, double, byte, bool等, 避免混淆, 本篇先針對int, char, double與bool幾種介紹與示範.

以下是四個變數的資料:

資料型態 說明
int 即Integer, 整數之意. 只能存取整數. 如: 1, 3, 1000, 5000 這些都是可以使用的整數值.
double 其實和float差不多, 即浮點數(小數). 如: 3.14, 1.1, 999.99 這些都是可以使用的浮點數值.
char Character, 即字元. 只能儲存單字元, 如: a, B, C, D (注意大小寫有差), 只能存一個喔!
現在各家的編譯器都沒有統一的字串變數, 因此要儲存超過一個字元 (如: "Computer") 您可能要另外找函式庫.
bool Boolean (布林), 只能儲存"真"或是"偽", 其實也就是1與0, 是與否.



C++的宣告方法與其他語言並沒有多大的差異:
double computer
這就是一個叫computer的浮點變數

試試看下面這段程式碼:

#include <iostream>
using namespace std;

int main()
{
   int computer = 1024;
   double RAM = 64.64;
   char Jump = 'a';
   bool Humvee = true;
}



上面這段程式宣告了以下變數:
一個叫做computer的整數, 其初始數值為1024.
一個叫做RAM的浮點數, 其初始數值為64.64.
一個叫做Jump的字元, 其初始數值為'a'. ( 字元必須用單引號包起來!!)
一個叫做Humvee的布林值, 其初始數值為"真".
初始(initialize) 就是指定一個數值給變數, 沒有初始的變數則會得到一個隨機的數值. 

將程式再改一下, 加上輸出: 

#include <iostream>
using namespace std;

int main()
{
   int computer = 1024;
   double RAM = 64.64;
   char Jump = 'a';
   bool Humvee = true;
   cout << computer << endl;
   cout << RAM << endl;
   cout << Jump << endl;
   cout << Humvee << endl;
}



編譯之後應該會看到以下輸出:
1024
64.64
a
1


布林的"真"是用1代表, "偽"則是用0代表, 應該沒有什麼問題吧? ( 若bool Humvee = false; 輸出則為0)

接下來我們要討論一下不同的資料種類傳遞的問題, 如今天有一浮點數要傳遞給整數變數, 會發生什麼事情呢?
這段程式碼:
   double number = 3.6;
   int another_number = number;

another_number整數在程式執行完畢以後的數值是3, 因為任何小數點後的數字都會自動被刪除, 不會四捨五入.
如果將char轉成int, 那int變數的數值將會是char字元的ASCII數值.

ASCII的全名是 美國資訊交流標準碼 (merican Standard Code for Information Interchange), ASCII字元表如下:

32   33 ! 34 " 35 # 36 $ 37 %
38 & 39 ' 40 ( 41 ) 42 * 43 +
44 , 45 - 46 . 47 / 48 0 49 1
50 2 51 3 52 4 53 5 54 6 55 7
56 8 57 9 58 : 59 ; 60 < 61 =
62 > 63 ? 64 @ 65 A 66 B 67 C
68 D 69 E 70 F 71 G 72 H 73 I
74 J 75 K 76 L 77 M 78 N 79 O
80 P 81 Q 82 R 83 S 84 T 85 U
86 V 87 W 88 X 89 Y 90 Z 91 [
92 \ 93 ] 94 ^ 95 _ 96 ` 97 a
98 b 99 c 100 d 101 e 102 f 103 g
104 h 105 i 106 j 107 k 108 l 109 m
110 n 111 o 112 p 113 q 114 r 115 s
116 t 117 u 118 v 119 w 120 x 121 y
122 z 123 { 124 | 125 } 126 ~


這也是為什麼強調char的字元大寫與小寫有差, 如果將char轉成int的時候, 出來的ASCII數值就不一樣了. 反過來, 也可以用數字的方式指定一個數值給char變數, 如:
char character = 97;
character所得到的數值就是小寫的'a'

部分變數轉換與運算關係:
int轉double, double會完全繼承int所含的整數
double轉int, 所有小數點後的位數都會被移除
char轉int, int會得到char的ASCII數字值
int轉char, char會得到ASCII對應的字元
double除以int, 出來的答案的資料型態的是double, 3.3/1 = 3.3
int除以double, 出來的答案的資料型態的是double, 10/3.0 = 3.3333333333333
int除以int, 出來的答案的資料型態的是int, 10/3 = 3 (不是3.3333333)

本文章全文改自:http://www.study-area.org/coobila/tutorial_412.html

 

arrow
arrow
    文章標籤
    變數與資料型態
    全站熱搜

    cout 發表在 痞客邦 留言(0) 人氣()