一.資料類型
1.C語言的32個關鍵字
2.常量和變量
(1)const 定義常量 隻讀
#include <stdio.h>
void main()
{
const int price = 3;
//price = 5; const 設定為隻讀 相當于定義為常量
printf("%d\n", price);
}
(2)宏定義常量
#define PI 3.14
(3)auto 變量
修飾變量 auto可加可不加 一般不加
auto float x=1;
(4)辨別符
①字母 下劃線 數字,但不能用數字開頭
②不能使用關鍵字命名
③辨別符嚴格差別大小寫
④見名知意
二.整型
1.signed 有符号的(預設) unsigned 無符号的
signed int a=10;
signed 預設可以不寫
unsigned int a=10;
printf("%u",a);
unsigned 需要用占位符%u來使用 當 a為負數時,輸出的結果會出現亂碼
2.進制
定義八進制資料 以0開頭
int a = 0123
定義16進制 以0x開頭
int a = 0x123
在計算機定義資料時 ,不能直接定義二進制
3.整形的輸入
& 取位址符
void main()
{
int a;
scanf("%d", &a);
printf("%d", a);
}
4.整形大小和取值範圍
5.sizeof 計算資料類型在記憶體中占用的位元組(byte)大小
1-位元組位元組位元組_Xuersry的部落格-CSDN部落格
https://blog.csdn.net/Xuersry/article/details/120011605?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163167799016780261921630%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163167799016780261921630&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-120011605.first_rank_v2_pc_rank_v29&utm_term=1%E5%AD%97%E8%8A%82&spm=1018.2226.3001.4187
三.字元型
1.字元變量的定義和輸出
char ch = 'a';
printf("%c",ch);
printf("%d",sizeof(ch));
字元資料占用記憶體為1個位元組
2.ASCII 碼值
0-9 對應的為 48 -57
A-Z 對應的為 65-
a-z對應的為 97-122
四.轉義字元
常用的轉義字元表格_NightChenRight的部落格-CSDN部落格
https://blog.csdn.net/NightChenRight/article/details/80866365?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163170080416780261984996%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163170080416780261984996&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-80866365.first_rank_v2_pc_rank_v29&utm_term=%E8%BD%AC%E4%B9%89%E5%AD%97%E7%AC%A6%E8%A1%A8%E6%A0%BC&spm=1018.2226.3001.4187
五.實型(浮點型)
1.單精度浮點型,雙精度浮點型
預設編寫代碼時,小數的double類型
int a = 10;
float b = 3.14f;
printf("%p",&a);
printf("%p",&b);
占位符 %p 表示輸出記憶體所在的位址(無符号的十六進制整形資料)
2.科學指派法
3.14e2=3.14*
相反負數則乘以0.1的n次方
int a = 3.14e2; //3.14*10*10
printf("%e",a);
五.進制轉換
1.正常方法
(1)10進制和2進制的轉換
① 除二反序取餘法 :短除法除以2,餘數反序書寫則為2進制的結果
② 權值法
1010(2)轉化為10進制
=10
(2)10進制和8進制的轉換
①除八反序取餘法
(3)10進制和16進制的轉換
①除十六反序取餘法
(4)2進制和8進制的轉換
2.規律
(1)8421法
①10進制和2進制的轉換
1:1 2:10 4:100 8:1000 16:10000.......
②8進制和2進制的轉換
三位一體的轉化
③16進制和2進制的轉換
四位一體的轉化
④8進制和16進制的轉換
可先轉2進制,再互相之間轉換
六.進制術語和小數存儲方式
1.浮點型的小數
浮點型的小數是不準确的,隻能無限趨近于
七.計算機記憶體數值存儲方式
1.原碼
char c1=10;
原碼:0000 1010
反碼:0000 1010
補碼:0000 1010
char c2=-10;
原碼:1000 1010
反碼:1111 0101
補碼:1111 0110
2.反碼
0為正數,1為負數;正數時,反碼和原碼相同;負數時,反碼除符号位不變,其餘1和0相反;
3.補碼
①正數時,原碼,反碼,補碼都相同;負數時,補碼為反碼+1;
②在計算機系統中,數值一律用補碼來儲存,主要原因有:
● 統一了零的編碼(在計算機内統一為+0)
● 将符号位和其他位統一處理
● 将減法運算轉化為加法運算
● 兩個用補碼表示的數相加時,如果最高位(符号位)有進位,則進位被舍棄
例如:72-68 = 72+(-68)
72
原碼:0010 1000
反碼:0010 1000
補碼:0010 1000
-68
原碼:1010 0100
反碼:1101 1011
補碼:1101 1100
72+(-68)
補碼:0010 1000
補碼:1101 1100
補碼:1 0000 0100 符号位有進位,則進位的舍棄
反碼:0000 0100
原碼:0000 0100 結果為4
72-78 = 72+(-78)
72
原碼:0010 1000
反碼:0010 1000
補碼:0010 1000
-78
原碼:1010 1110
反碼:1101 0001
補碼:1101 0010
72+(-78)
補碼:0010 1000
補碼:1101 0010
補碼:1111 1010
反碼:1111 1001
原碼:1000 0110 結果是-6
4.有符号和無符号的取值範圍
(1)有符号的數值取值範圍 signed
8bit資料的取值的範圍 [-128,127] [-
,
-1]
(2)無符号的數值取值範圍 unsigned
8bit [0,255]
無符号的最高位不是符号位
5.資料溢出
當資料溢出會造成符号相反或者資料丢失