常量:不會變化的資料。不能被修改。
1. “hello”、'A'、-10、3.1415926(浮點常量)
2. #define PI 3.1415 【強調】:沒有分號結束標記。 【推薦】 定義宏: 定義語法: #define 宏名 宏值
3. const int a = 10; 定義語法:const 型別名 變數名 = 變數值。
const關鍵字: 被該關鍵字修飾的變數,表示為只讀變數。
變數:會變化的資料。能被修改。
定義語法:型別名 變數名 = 變數值。(一般方法)
變數三要素:型別名、變數名、變數值。 int r = 3; float s = PI*r*r;(變數值是一個表示式)
變數的定義: int a = 40;
變數的宣告: 1) int a; 沒有變數值的變數定義 叫做宣告。
2)extern int a; 新增了關鍵字 extern。
1. 變數定義會開闢記憶體空間。變數宣告不會開闢記憶體空間。
2. 變數要想使用必須有定義。
當編譯器編譯程式時,在變數使用之前,必須要看到變數定義。如果沒有看到變數定義,編譯器會自動找尋一個變數宣告提升成為定義。
如果該變數的宣告前有 extern 關鍵字,無法提升。
【建議】:定義變數時。儘量不要重名。
識別符號:
變數和常量的統稱。
命名規則: 1. 通常常量使用大寫、變數使用小寫。大小寫嚴格區分。
2. 只能使用字母、陣列、下劃線(_)命名識別符號。且,數字不能開頭。 a-z/A-Z/0-9/_
int a5ir = 10; ok
int _34F = 6; ok
float s2_i85c = 5.4; ok
int 98ti_54 = 4; error.
3. 禁止使用關鍵字和系統函式作為識別符號名稱。 main/system/printf/sleep....
sizeof關鍵字:
不是函式。用來求一個變數、型別的大小。 返回一個 無符號整數。 使用 %u 接收返回值。
方法1: sizeof(型別名) -- sizeof(int)
方法2: sizeof(變數名) --- int a = 20; sizeof(a)
【瞭解】: sizeof 變數名/型別名 舉例1: sizeof int
舉例2: sizeof a
有符號整型:
signed: 有符號 (超級不常用, 通常省略): int a = 10; a = -7;
int型別: %d 4 位元組
int 名 = 值;
short型別: %hd 2 位元組
short 名 = 值; short s1 = 3;
long型別: %ld 4 位元組 (windows: 32/64: 4位元組; Linux:32位:4位元組, 64位:8位元組)
long 名 = 值; long len = 6;
long long 型別:%lld 8 位元組
long long 名= 值; long long llen = 70;
無符號整型:
unsigned: 無符號 只表示資料量,而沒有方向(沒有正負)
unsigned int型別: %u 4 位元組
unsigned int 名 = 值;
unsigned int a = 40;
unsigned short型別: %hu 2 位元組
unsigned short 名 = 值;
unsigned short s1 = 3;
unsigned long型別: %lu 4 位元組 (windows: 32/64: 4位元組; Linux:32位:4位元組, 64位:8位元組)
unsigned long 名 = 值;
unsigned long len = 6;
unsigned long long 型別:%llu 8 位元組
unsigned long long 名 = 值;
unsigned long long llen = 70;
char字元型別:1位元組
儲存一個字元。本質是ASCII碼。 ‘A’、‘a’、‘%’、‘#’、‘0’
格式匹配符: %c
‘A’:65
‘a’:97
‘0’:48
‘\n’:10
‘\0’: 0
跳脫字元:
‘\’ 將普通字元轉為 特殊意。 將特殊字元轉為本身意。
'\n' 和 ‘\0’
實型(浮點數、小數):
float: 單精度浮點型。 4位元組
float v1 = 4.345;
%f格式匹配符。 預設保留 6 位小數。
double:雙精度浮點型。 8位元組 【預設】
double v2 = 5.678;
unsigned float v1 = 4.345; 無符號的 float 資料
unsigned double v2 = 5.678; 無符號的 float 資料
printf("n = %08.3f\n", n);
輸出的含義為:顯示8位數(包含小數點), 不足8位用0填充。並且保留3位小數。對第4位做四捨五入。
進位制和轉換:
十進位制轉2進位制。 --- 除2反向取餘法。 【重點】
十進位制轉8進位制。 --- 除8反向取餘法。
十進位制轉16進位制。--- 除16反向取餘法。
int a = 56; -- 111000
int b = 173; -- 10101101
2進位制轉10進位制。
2^10 = 1024
2^9 = 512
2^8 = 256
2^7 = 128
2^6 = 64
2^5 = 32
2^4 = 16
2^3 = 8
2^2 = 4
8進位制:
8進位制轉10進位制。
定義8進位制數語法:
056: 零開頭,每位數0~7之間。 ---- 46
0124: ---- 84
8進位制轉2進位制。
按421碼將每個八進位制位展開。
056:5--》 101。 6--》 110 。
101110
05326:5 --》 101。 3--》 011。 2--》 010。 6--》 110
2進位制轉8進位制:
1 010 111 010 110: 012726
自右向左,每3位一組,按421碼轉換。高位不足三位補0
16進位制:
語法: 以0x開頭,每位 取 0-9/A-F/a-f
A -- 10
B -- 11
C -- 12
D -- 13
E -- 14
F -- 15
16 -- 10:
0x1A: 16+10 = 26
0x13F:15+3x16+256
16 -- 2:
0x1A: 00011010
0x13F: 000100111111
2 -- 16:
0001 0011 1111: 13F
自右向左,每4位一組,按8421碼轉換。高位不足三位補0
總結:
int m = 0x15F4;
int n = 345;
int var = 010011; // 不允許。 不能給變數直接複製 二進位制資料。
輸出格式:
%d %u %o %x %hd %hu %ld %lu %lld %llu %c %f %lf
%d %u %x %c %s
儲存知識:
1 bit位 就是一個 二進位制位
一個位元組 1B = 8bit位。
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
原始碼反碼補碼:【瞭解】
原始碼:
43 -> 00101011
-43 --> 10101011
反碼:
43 -> 00101011
-43 --> 10101011
11010100
補碼:(現今計算機採用的儲存形式)
43 -> 00101011 : 正數不變
-43 --> 11010101 : 負數,最高位表符號位, 其餘取反+1
43-27 ==》 43 + -27
人為規定: 10000000 --》 -128
-------------------------------------------------
char 型別:1位元組 8個bit位。 數值位有7個。
有符號: -2^7 --- 2^7-1 == -2^(8-1) -- 2(8-1) -1
--》 -128 ~ 127
無符號: 0 ~ 2^8 -1
--》 0~255
不要超出該資料型別的儲存範圍。
short型別:2位元組 16bit
有符號: -2^15 --- 2^15-1 == -2^(16-1) -- 2(16-1) -1
--》 -32768 ~ 32767
無符號: 0 ~ 2^8 -1
--》 0~65535
int 型別:4位元組 -2^(32-1) -- 2^(32-1)-1
有符號:
--》 -2147483648 ~ 2147483647
無符號: 0~2^32 -1
--》 0~4294967295
long型別:4位元組
有符號:
--》 -2147483648 ~ 2147483647
無符號: 0~2^32 -1
--》 0~4294967295
longlong 型別:8位元組
有符號:
--》 -2^(63) ~ 2^(63)-1
無符號:
--》 0~2^63-1