您好,登錄后才能下訂單哦!
常量:#define const 字符串常量
1 8 10 16 進制轉換
sizeof關鍵字
變量 int folat char
類型限定 const volatile register
輸入輸出 printf scanf
運算符 = + - * / % += -= *= /= %= ++ -- , 運算符優先級
代碼塊{}
類型轉換
常量就是在程序中不可變化的量,常量是不可被賦值的。
#define的本質就是簡單的文本替換
通過#define定義的常量,在C語言里面一般叫宏定義
const定義一個變量,但是這個變量的值只能在定義的時候賦予,之后就不可以修改。
對于const類型的變量,一定要在定義的時候給變量賦初值,不然定義之后就無法賦值了。
在C語言當中“”引用的字符串都是字符串常量,常量一旦定義也是不可以被修改的。
計算機內部都是二進制的,一個二進制的位,就叫做一個bit,就是一位
逢二加1,在二進制表達數的時候是只有0和1,而沒有2這個數的
二進制最大表示的數,就是2幾次冪
對于8位的CPU來講,最大表達的數是2的8次冪
逢10加1,只有從0 到9的數,沒有10這個數,
從0到7,逢8加1
在C語言中八進制是數字前面加0
0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,10
逢16加1,
在C語言當中表達一個十六進制數的方式,數字前面加0x前綴
8個bit為代表一個字節
sizeof與size_t類型
sizeof是計算數據在內存當中占多大空間的,單位字節
由于sizeof永遠返回的是一個大于等于0的整數,所以如果用int來表示sizeof的返回值就不合適,size_t一般就是一個無符號的整數.
一個int型數據占據4個字節的內存大小,在16位操作系統下,int是2個字節,在32和64位操作系統下,int是4個字節。
int a;//代表在內存當中開辟一個4個字節大小的空間
a = 10;//代表4個字節的空間內容是常量10
小端對齊和大端對齊
高地址放高位,底地址放低位---小端對齊
高地址放低位,底地址放高位—大端對齊
對于大型unixCPU都是按照大端對齊方式處理int,
但對于x86構架CPU,還有ARM,是小端對齊的
int a = 0x100;//十六進制
printf(“%d”,a);%d的意思是按照10進制打印一個整數
%x
%X,輸出十六進制的時候是用大寫的ABCDEF還是小寫的abcdef,
%o
在32位系統下:
short = 2個字節
long和int一樣,是4字節
long long 是8個字節
在64位操作系統下
int,4個字節
long 在大多數64位系統下8個字節
unsigned int//無符號整數
unsigned long//無符號的長整數
unsigned short//無符號短整數
9l,9L,9ll,9LL,9u,9ull,9ULL
當把一個大的整數賦值給小的整數,叫溢出。
int I = 0x12345678
short a = I;
當一個int賦值給short,會將高位拋棄,
char是字符型,代表一個字節的內存
char在內存當中,有符號最大7f,
無符號,最大ff
unsigned char
char的本質就是一個字節,一個BYTE
%c
\a,警報
\b退格
\n換行
\r回車
\t制表符
\\斜杠
\’單引號
\”雙引號
\?問號
char取值范圍為-128到127
unsigned char為0-255
float f = 2.5;
double f1 = 3.1415926
%f,%Lf
const限定一個變量的值不可以改變
告訴編譯器不要自作聰明的給我優化代碼,把我的變量優化的寄存器里面計算,只要是volatile類型變量,每一步都需要從內存當中讀取。
register告訴編譯器,這個變量只是用寄存器就好,提高效率,所以說register只是一個建議,而不是必須的結果。
字符串是內存中一段連續的char空間,以’\0’結尾
字符串就是0結尾的連續char的內存
printf格式字符
字符 | 對應數據類型 | 含義 |
d | int | 接受整數值并將它表示為有符號的十進制整數 |
hd | Short int | 短整數 |
hu | Unsigned short int | 無符號短整數 |
o | unsigned int | 無符號8進制整數 |
u | unsigned int | 無符號10進制整數 |
x / X | unsigned int | 無符號16進制整數,x對應的是abcdef,X對應的是ABCDEF |
f | float或double | 單精度浮點數或雙精度浮點數 |
e / E | double | 科學計數法表示的數,此處"e"的大小寫代表在輸出時用的“e”的大小寫 |
c | char | 字符型。可以把輸入的數字按照ASCII碼相應轉換為對應的字符 |
s / S | char * / wchar_t * | 字符串。輸出字符串中的字符直至字符串中的空字符(字符串以'\0‘結尾,這個'\0'即空字符) |
p | void * | 以16進制形式輸出指針 |
% | % | 輸出一個百分號 |
printf附加格式
字符 | 含義 |
l | 附加在d,u,x,o前面,表示長整數 |
- | 左對齊 |
m(代表一個整數) | 數據最小寬度 |
0 | 將輸出的前面補上0直到占滿指定列寬為止不可以搭配使用- |
N(代表一個整數) | 寬度至少為n位不夠以空格填充 |
printf是打印一個字符串
putchar是打印一個字符
數據對象:泛指數據在內存的存儲區域
左值:表示可以被更改的數據對象
右值:能賦給左值的量
取模,取余數
int a = 10;
a = a + 5;
可以簡寫成a +=5;
a = a – 5;a -= 5;
a = a * 5;a *= 5;
int I = 6 + 5, 3 + 2
逗號表達式先求逗號左邊的值,然后求右邊的值,整個語句的值是逗號右邊的值。
優先級 | 運算符 | 結合性 |
1 | ++(后綴),--(后綴),()(調用函數),{}(語句塊),.,-> | 從左到右 |
2 | ++(前綴),--(前綴),+(前綴),-(前綴),!(前綴),~(前綴),sizeof,*(取指針值),&(取地址),(type)(類型轉化) | 從右到左 |
3 | *, /, % | 從左到右 |
4 | +,- | 從左到右 |
5 | << >> | 從左到右 |
6 | < > <= >= | 從左到右 |
7 | == != | 從左到右 |
8 | & | 從左到右 |
9 | ^ | 從左到右 |
10 | | | 從左到右 |
11 | && | 從左到右 |
12 | || | 從左到右 |
13 | ? | 從右到左 |
14 | =,*=,%=,+=,-=,<<=,>>=,&=,|=,^= | 從右到左 |
15 | ,(逗號運算符) | 從左到右 |
{}代碼塊
double d = 10.2;
int a =d;//隱式轉換
int a1 = 3;
int a2 = 2;
double mid = (double)a1 / (double)a2;//顯示的強轉
printf("mid = %f\n", mid);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。