# 資料型態與宣告

當我們要使用一個變數的時候,需要先對它進行宣告
例如: int a;
意思是我們宣告一個資料型態為 int (整數) 的變數 a,a 裡面可以存固定範圍內的任何整數

以下是一些基本的資料型態:

資料型態解釋儲存內容 & 範圍補充
bool布林變數true 和 falsetrue=1 false=0
int整數2^-31 ~ 2^31-1
unsigned int正整數0 ~ 2^32-1
long long特大的整數2^-63 ~ 2^63-1
float浮點數 (小數)有效位數 7 位
double倍精確浮點數 (小數)有效位數 15 位
char字元0 ~ 255 (ASCII Code)'' 表示
string字串一連串的任意文字"" 表示

變數宣告的標準語法為: 資料型態 變數名稱 = 值:

範例:

bool a = true;
int b = -5;
unsigned int c = 45;
long long d = 999;
float e = 3.56;
double f = 9.0005;
char g = 'y';
string h = "mystring";
cout << a << endl;
cout << b << " " << c " " << d << endl;
cout << e << " " << f << endl;
cout << g << " " << h;

輸出為:

1
-5 45 999
3.56 9.0005
y mystring

變數名稱的命名規則:

  1. 只能以英文字母及 _ 開頭
  2. 只能包含英文字母、數字及 _
  3. 保留字不能使用 (保留字為 cout, cin, int, char... 等)

int _abc; // 合法
int my_data_22; // 合法

int 12book; // 不合法
int cout; // 不合法


我們也可以一次宣告多個同型態的變數
例如: int a = 0, b, c;


補充:
C++11 之後新增了一個叫 auto 的資料型態
它會基於賦予的值自動判斷資料型態
例如:
auto a = 1; //auto 為 int 型態
auto b = 'c'; //auto 為 char 型態
由於他是根據賦予的值決定資料型態,所以沒有賦予值的形況下無法使用 auto

建議一開始還是直接宣告資料型態
等到以後對資料型態比較熟悉,或宣告極其複雜的資料型態的時候才使用


# 基本運算子

以下是 C++ 的基本運算子

符號解釋
+加號
-減號、負號
*乘號
/除號
%取餘數
=指派
+++1
---1
()括號

基本上,這些運算子的用法就跟數學運算一樣
範例 1:

int a = 1, b = 2, c = 3;
cout << a + b + c; // 印出 6
cout << a - b - c; // 印出 - 4
cout << a * b * c; // 印出 6
cout << c / a; // 印出 3
cout << 3 % 2; // 印出 1

其中比較特別的是 % 取餘數,以上面的程式來看,它的意思是取 3 除以 2 的餘數,答案為 1


範例 2:

int a = 0;
int b = a + 1;  // b = 1
cout << ++b << a++; //b 印出 2, a 的值為 1,但印出 0
cout << a * (a + b);  // 印出 3
a--;
--b;
cout << a << b;  //a 印出 0, b 印出 1

第二行中,運用到 = 指派運算子,將 a 的值 + 1 賦予 b,所以 b 的值為 0 + 1 = 1

第四行中,同樣是 ++ ,但是一個在變數前面,一個在變數後面
它們的區別是 ++b 會將 b 先 + 1,再做剩餘的運算, a++ 會先將 a 的值取出,做完運算再 + 1

實際上, ++aa++ 是同時做 + 1
++a 將 a + 1,之後傳出 a
a++ 會產生一個暫時的變數 temp,先將 temp = a,把 a + 1,再傳出 temp

第六行中,按照原本的順序是先乘除後加減,但是因為有括號,所以優先做括號內的運算


當你要在原本變數的基礎上進行運算時,能夠將寫法簡化,如下:
a += 1;a = a + 1; 相等
a -= 1;a = a - 1; 相等
a *= 1;a = a * 1; 相等
a /= 1;a = a / 1; 相等
a %= 1;a = a % 1; 相等


# 註解

C++ 的註解共有兩種寫法

  1. 第一種是單行註解,以 // 表示, // 後面的所以文字皆為註解
//單行註解
  1. 第二種是多行註解,以 /* */ 表示, /* */ 內的文字皆為註解
/*
多行註解
*/