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