# 資料型態和變數 ## 介紹變數之前... ### 電腦是如何存資料的? 先來了解bit跟byte bit與byte皆是電腦資訊的計量單位。 * Bit = 位元 = b(小寫) = 0 或 1 * Byte = 位元組 = B(大寫) = 00000000、00000001 ~ 11111111,2^8(256)種狀態 ![](https://i.imgur.com/41DPDn8.png) 1 Byte = 8 Bits 1個字為1個byte,中文字則為2 byte 1個byte 可表示 0~255的數字,也可以表示一個英文字母及符號 這個東西叫二進制 --- ### 如何計算? 以100來舉例: * 要從十進位轉成二進位 ![](https://i.imgur.com/WRZQrui.jpg) * 從二進位轉成十進位 ![](https://i.imgur.com/KJKmYtU.jpg) --- 如果是負數? 有<font color=#FF0000>二補數</font>的概念 就是把最後一個Bit 所代表的數字加個負號。 ![](https://i.imgur.com/O5c5hxd.png) --- 如果是浮點數? 浮點數的二進位牽扯到數學指數部分,但原理幾乎都差不多,有興趣可以去查一下 --- ## 資料型態 以下表格為常用的資料型態 | 型別 | 表示方法 | 數值範圍 | Bits | |:----------:|:------------------ |:------------------------------------------- |:-------- | | 整數(有號) | int | -2147483648 ~ 2147483647 | 16 or 32 | | | char | -128 ~ 127 | 8 | | | long | -2147483648 ~ 2147483647 | 32 | | | long long | -9223372036854775808 ~ 9223372036854775807 | 64 | | 整數(無號) | unsigned int | 0 ~ 4294967295 | 16 or 32 | | | unsigned char | 0 ~ 256 | 8 | | | unsigned long | 0 ~ 4294967295 | 32 | | | unsigned long long | 0 ~ 18446744073709551615 | 64 | | 浮點數 | float | 3.4E +/- 38 (7 位數) | 32 | | | double | 1.7E +/- 308 (15 位數) | 64 | | 布林值 | bool | 0~1 | 1 | | 字元 | char | -128 到127(預設值) 使用編譯時為0到255 | 8 | 字元: ![](https://i.imgur.com/FJXw3X9.png) 由圖可知,我們發現每一個字元對電腦來說都代表一個數字。 ex: 字元'1'代表的數字不是1,而是49。 ## 變數 變數:可以將我們要的資料存起來,之後可以使用 ### 如何宣告變數? 在C/C++,當需要使用變數時,都需要先宣告。 ``` 資料型態 資料名稱 ``` 舉例: ```c int a; float b; char c; ``` 變數名稱可以隨便取都可以,但有幾種規定 :::warning 1. 變數名稱不能有中文 如:`int 變數`、`int 人數`:-1: 2. 變數名稱的開頭不能是數字,但在英文後面加數字是可以的 如:`int 123`、`int 33`:-1: `int q1`:+1: 4. 變數名稱中不能有運算符號或判斷運算子 如:+ - * / % & | { } []:-1: 5. 大小寫所宣告的變數,記憶體位置是不一樣的 如:`int star` `int Star` 6. 變數名稱中不能有空格,可以用_代替 如:`int counter people` :-1: `int counter_people` :+1: ::: --- 我們也可以宣告多個變數,用`,`分開變數 ```c int a,b,c; ``` ## 賦值 將我們要的資料放進變數裡 舉例: ```c int a; float b; char c; a=1; b=1.5; c='A'; ``` --- 也可以在宣告時就直接賦值 舉例: ```c int a=1,b=2,c=3; ``` --- 強制變更變數的資料型態 舉例: ```c float a; int b; a=(float)b; ``` ## 補充:#define、const ### define `#define`中文代表定義,可以將一個變數轉換成一個數字或者資料型態。 define後面不用加`;` ``` #define 名稱 數值or資料型態 ``` 舉例: ```c= #include <stdio.h> #define SEANCHOU 10 #define CHISC int int main(){ CHISC a=SEANCHOU; printf("%d",a); return 0 ; } ``` 輸出: ``` 10 ``` ### const 當有一個變數你希望他的值不要變,那就可以用const保護起來,你果你試著更改這個變數的值,他會報錯。 舉例 ```c= #include <stdio.h> int main(){ const int a=10; a=20; printf("%d",a); return 0 ; } ``` 報錯 ``` error: assignment of read-only variable 'a' ``` ###### tags: `中和高中`