# 資料型態 Data type

# 整數 int && short && long

類型名中文意義位元組 (Byte)數值範圍
int整數4-231(-2147483648)~231-1(2147483647)
short 或 short int短整數2-32768 ~ 32767
long 或 long int長整數4-231~ 231-1
unsigned無符號整數40~ 232-1
unsigned short無符號短整數20~ 65535
unsigned long無符號長整數40~ 232-1
  • 整數型:一個數不帶小數點,可帶正負號。如: 1 , 12 , +123 , -1234
  • 十六進制整數:前綴 0x (x 大小寫均可)。如: 0xFF , 0x10 , 0x21 , -0XFF , -0X10 , -0X21
  • 八進制整數:前綴 0 。如: 010 , 021 , -010 , -021

十進制、十六進制、八進制,沒小數點,都是整數,都佔 4 個位元。
如: 160x10 , 020 在電腦中存的都是 16 這個數。

# 符點數 float && double

類型名中文意義位元組 (Byte)數值範圍
float單精度符點數4±3.4×10-38 ~ ± 3.4×1038
double雙精度符點數8±1.8×10-308 ~ ±1.8×10308
  • 雙精度數:數據帶小數點
    • 小數形式: 1.0 , 1. , 0.1 , .1
    • 指數形式: 1.2E-2 表示 1.2×10-21.2e+2 表示 1.2×102-1.2E2 表示 - 1.2×102
  • 單精度數:帶小數點,加後綴 Ff ,如 12.5F1.25E-2F-12.5f

float 的有效位數至小數點後第 7 位,而 double 的有效位數至小數點後第 15 位

1 是整數型,佔 4 個位元; 1. 是雙精度浮點數,佔 8 個位元
1/21.0/2 的運算結果不一樣

# 字元 char

  • 使用:
    將字母寫在一對單引號中表示字元
    如: 'A' , 'B' , 'C''a' , 'b' , 'c''0' , '1' , '2' , '3''#' , '$' , '%'

  • 位元數:

    • 每個字元佔一個位元,保存英文字符的 ASCII 碼值。
    • 實際也是一個整數,可以參與整數能進行的運算,如 'a'+12
  • 注意:
    'a'a 是不一樣的: 'a' 是字元,表示 a 本身; a 識別符,如變數,代表別的數據。

# 跳脫字元

用一個反斜槓 + 一個字母 (或數字) 表示,它也是 1 個字元

跳脫字元表示跳脫字元表示
\n換行\r回車
\b退格\t水平 Tab
\'單引號\"雙引號
\0空字符字符串的结束符\f分頁
cout<<'\''; // 顯示單引號
cout<<'\"'; // 顯示雙引號
// 將 "Hello World" 顯示到兩行上
// 方法 1
cout<<"Hello"<<endl;
cout<<"World"<<endl;
// 方法 2
cout<<"Hello"<<endl<<"World"<<endl;
// 方法 3
cout<<"Hello \nWorld";
/*
顯示
1234 12  567
12   143 12
按列對齊
*/
// 方法 1,加入空格,需要自己數空格
cout<<1234<<" "<<12<<" "<<567<<endl;
cout<<12<<"  "<<143<<" "<<12<<endl;
// 方法 2,加入 \t,相當於每個間隔 8 位
cout<<1234<<"\t"<<12<<"\t"<<567<<endl;
cout<<12<<"\t"<<143<<"\t"<<12<<endl;
cout<<"1-abcde\n#12345"<<endl;
/* 顯示内容:
1-abcde
#12345
*/
cout<<"2-abcde\r#12345"<<endl;
/* 顯示内容:
#12345
備注:顯示到 \r 時回車到本行第一个字元,後續内容覆蓋顯示
*/
cout<<"3-abcde\t#12345"<<endl;
/* 顯示内容:
3-abcde	#12345
*/
cout<<"4-abcde\f#12345"<<endl;
/* 螢幕顯示内容:
4-abcde#12345
備注:打印機上到 \f 則會換頁
*/
cout<<"5-abcde\b#12345"<<endl;
/* 顯示内容:
5-abcd#12345
備注:顯示到 \b 時退格到 接著覆蓋後面的內容
*/
cout<<"9-abcde\0#12345"<<endl;
/* 顯示内容:
9-abcde
備注:顯示到 \0 时,表示字符串已經結束,後續内容不再顯示
*/
cout<<"10-abcde\141#12345"<<endl;
/* 顯示内容:
10-abcdea#123456
備注:顯示到 \141 表示一個八進位數,轉換為 10 進位為 97,顯示的是 a
*/

# 字串

是連續的多個字元

  • 使用: 字串寫在一對雙引號之間,如: "Hello World" , "Zrn-code"
  • 位元數: 字串占的位元數等於 字串長度+1

    為什麼 + 1?
    末尾加了一個結束符,用空字符 '\0' ASCII 碼第一個字符表示,數值上是 0
    空字符 '\0' ,什麼也沒有,ASCII 碼值為 0
    空格 ' ' ,佔一個字符位,不顯示圖案,ASCII 碼值為 32 ,兩者不同。

HelloWorld'\0'

# 布林 bool

表示 “真”,“假” 判斷的結果

  • 使用: true,表示 "真";false,表示 "假"
  • 儲存: true,存的是 1;false,存的是 0
  • 0 數值,當布林值相當於 true
  • 數值 0 ,當布林值相當於 fasle
  • 布林值存放的是數字,因此可以進行數學運算 (冷知識)

# 數據表示方法

常數是不能改變的量,變數是可以變的量

# 字面常數

字面量、直接常數:直接寫出的數據。(不建議使用)

2,3,4;
1.2,1.3;
"Hello world!";
cout<<2020;

# 符號常數 const && #define

運用符號常數,一旦確定表示哪個數值後,就不能更變。

# const

const <資料型態> <常數名稱> = <數據>;
const int N = 100;
const double pai = 3.1415926;
const char A = 'A';
const int M = 100,K = 100;

記得加分號

# #define

// 在 main 函數之前
// 通常會寫在 #include 下方
#define <常數名稱> <數據>
#define PI 3.14
#define N  1e6

行末沒有分號,這不是 C++ 語句,稱為預處理
編譯前,電腦會先將所有 <常數> 全部都替換為 < 數據 >,然後再編譯。

# 變數

變數是用符號表示數據,他表示的數據是可以變的。

# 變數宣告

<資料型態> <變數名稱1> [,<變數名稱2>,<變數名稱3>...];
int a;
double d1,d2;
char c1,c2,c3;

# 變數初始化

在宣告時,就將其的值先行定義。

<資料型態> <變數名稱1> = <1>  [,<變數名稱2> = <2>...];
int a = 5;
double d1 = 2.06,d2 = 0.24;
char c1 = '+',c2 = '-',c3 = '%';

# 變數賦值

等號 = 稱為賦值運算符,其作用是將右邊的值傳遞到左邊

<變數名> = <>;
const double PI = 3.14; // 宣告常數 PI 的值為 3.14
double r ,area;  // 宣告變數 r 跟 area
r = 5.0; // 將 r 賦值
area = r * r * PI; // 計算完面積後將值傳回 area
cout<< area<<endl; // 顯示結果

# 使用注意點

  • 先定義,再使用
  • 只能定義一次,不能重複定義
  • 先賦值,再參與計算
  • 變數可以多次賦值,而常量是不能賦值的
  • 變數的定義可以出現在使用前的任何地方,但建議在程序的開始定義變數
  • 少用或不用字面常數

# 溫故知新

# 整數、字元

# 整數

  • 整數常數
整數常數意義
12整數
12L長整數
0x15十六進制整數
015八進位整數
12U無符號數
  • 整數變數
int a,b;
int x=10,y=20;

# 字元

  • 字元常數
字元常數意義
'a'字母字元
'1'數字字元
'\t'跳脫字元
'\x41'跳脫字元,ASCII 碼值是十六進位
'\102'跳脫字元,ASCII 碼值是八進位
  • 字元變數
char c,d;
char e = `A`,f = `\121`;

# 內存的形式

整數 1 在内存中儲存的是其二進制的形式: 00000000 00000000 00000000 00000001
字元 '1' 在内存中儲存的是 1 這個字元的 ASCII 碼值,即 49 ,其二進制形式是 0011 0001 ,實際也是個整數,只占一個位元!

int x;
char c = 'A';
x = c + 2; // 即 65 + 2 = 67
c = 98; // 即 'b'
cout<<x<<" "<<c<<endl;
  • 整數和字元在內存中都有整數。
    • 整數,存放數的二進制形式。
    • 字元,存放其 ASCII 碼值。
  • 輸出時
    • 當整數看待,顯示數的十進制。
    • 當字元看待,顯示的是 ASCII 值是這個數的字元 (該數 < 128)。
int a = 65; // 等同於 int a = 'A';
cout<<a<<endl; //65
cout<<(char)a<<endl; //A
char c ='a';// 等同於 char c = 97;
cout<<c<<endl; //a
cout<<int(c)<<endl; //97

# 字串

  • 字串常數
    "Zrn" 、"zhang"、 "Hello world"
  • 字串 "變數"
char name[40] ="zhang";

# 內存的形式

內存中, name 稱為字元陣列,最多可放 40 個位元大小的字元。

索引值 (index)012345...39
字元'z''h''a''n''g''/0'...
內存中實際儲存的 ASCII122104971101030...

name 中的每一個字元可以通過 name[i] 下標表示, i=0,...,n-1
n 是字串的長度,對 "zhang" 來說,n = 5

int i = 0,k;
name[i] = 'c'; 
cout<<name[i]<<endl; // 顯示為 99
k = name[i] - 'a' + 1; // 這裡的 'a' 等同於 97
cout<<k<<endl;  // 顯示為 3

# 跳脫字元

  • 可顯示字元,可以在鍵盤上直接輸入
char c = 'A';
  • 不可顯示字元,不能直接輸入
    ASCII 碼值界在 0~32 之間的字元是控制符號,不能顯示在螢幕上
char d = '\n';
cout<< "Zrn"<<d<<"hello"<<endl;
cout<< "Zrn\nhello\n";
  • C++ 中,單引號表示字元,雙引號表示字串,反斜槓表示跳脫
    如果需要顯示他們,則單引號為 \' ,雙引號 \" ,反斜槓 \\

  • 表示八進制、十六進制
    \ + 三位數字 (0-7):八進制 ASCII,數值上小於 128,如 \ddd\ + ddd 八進制 ASCII
    \x + 兩位數字 (0-9) 或字母 (A-F):十六進制 ASCII,如 \xhh\x + hh 十六進制 ASCII

\n \12 \x0A 表示換行
\41 \041 \x21 表示 '!'
\60 \060 \x30 表示字元 '0'
\101 \x41 表示 'A'
\141 \x61 表示 'a'
\7 \07 \007 \x7 表示響鈴

# 常見跳脫字元

跳脫字元意義ASCII 十進制跳脫字元意義ASCII 十進制
\0空字符0\r回車13
\a響鈴7"雙引號34
\b退格8'單引號39
\t水平制表9\\反斜槓92
\n換行10\ddd任意字元ddd 八進制
\v垂直制表11\xhh任意字元hh 十六進制
\f換頁12

回車:回到本行開頭
換行:換到下行開頭

更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay