c筆記小結

2022-09-13 13:42:09 字數 2786 閱讀 6124

c中的字串是被雙引號

「...」括起來的字串行:」abc」,」123456」

printf( 「列印字串%s\n」 , 」abc/123456」 );

printf( 「%d\n」 , 1 + 1 );

資料型別與變數:

整數型別:不帶小數點的型別,%d

浮點數型別:帶小數點的型別,%f

字元型別:英文本元型別,字元資料是使用單引號括起來的乙個字元 』a』 , 』n』 , 』\n』 (為無回顯字元

),%c

改變變數所代表的值的操作叫做賦值操作;

=  在程式中為賦值符號;

定義變數之後在通過賦值改變其代表的;

初始化即讓建立變數出來的變數有乙個初始值;

定義變數的同時給乙個值;

四則運算:+ , - , * , / , %(取餘運算,結果為餘數,浮點數不能取餘運算

) ,先正負號接著乘除最後加減;

關係運算:

< , > , <= , >= , == , != 結果為邏輯值:真

(1),假

(0)

,大小比較運算

>

相等比較運算;

邏輯運算:&& , || , ! 邏輯運算參與者為邏輯值:真或假,任何非零值在邏輯運算中均為真,任何零值在邏輯運算中均為假;

邏輯運算的短路法則:

對於&&,從左向右進行,如果有乙個運算元為假,則整個表示式為假,第乙個為假的運算元之後的其它運算元不再計算;

對於||,從左往右進行,如果有乙個運算元為真,則整個表示式為真,第乙個為真的運算元之後的其它運算元不再計算;

取非運算,單目運算,只需乙個運算元,運算結果為邏輯值,真值取非為假,假值取非為真;

c=!!c;  //非0即

1位運算: | , ^ ,& , >> , << , ~ 只能對整數型的運算元進行運算,優先順序從低到高;

~  按位取反,

~0101=1010

<< 左移,高位移出,低位補0,

0011 << 1 = 0110

>> 右移,低位移除,高位補符號位,

0101 >> 2 = 0001

&  按位與,

0011 & 1111 = 0011

,某一位和

0與,其餘和

1與,相當於按位置零

^  按位異或,同為

0,不同為

1,不進製加法,

0011 ^ 1111 = 1100

,某一位和

1異或相當於取反

|  按位或,

0011|1111 = 1111

,某一位和

1按位或,相當於置

1,優先順序:四則運算 > 關係運算

>

賦值運算( = )

同乙個表示式中應避免不同的運算型別(四則運算,關係運算)

正數用原碼表示,負數用補碼表示

位運算時先明確:

1運算元的型別,占用記憶體的大小;

2運算元是正數還是負數;

3不同型別的運算元要先自動對齊再進行位運算;(補符號位)

左值和右值,

左值:可以出現在賦值符號左邊的值,如變數

右值:出現在賦值符號右邊的值,如變數,字面量,計算結果(a+b),任意表示式

連續變數定義和連續賦值

int a , b , c ;  a = b = c ;   →   b = c ; a = b ;

三目運算子(條件運算子)

( 條件

)  ?  (

為真時語句

)  :  (

為假時語句

)(b<10) ? (a = 10) : (a = 100);三目運算子產生的是乙個值,不能作為左值使用;

逗號表示式,可以將多個語句連線為乙個語句,從左往右執行語句,逗號表示式的值是最右邊語句的值;c = ( a=2 , b=3 , a+b );  →  c = 5;

自增自減運算子 ++  - -

前置:先自增自減,再取值

++v  →  (v=v+1 , v)

--v  →  (v=v-1  , v)

後置:先取值,再自增自減

v++  →  (v=v+1 , v-1)

v--   →  (v=v-1 , v+1)

自增自減操作符的結合方向:自右向左,int c= 1; a = -c++ ;→  a = -1 ; c=2 ;

自增自減不支援浮點型別

char 一位元組;short 兩位元組;int 四位元組;

正數的最高位為0,負數的最高位為

1;正數的補碼為正數本身,負數的補碼為負數絕對值取反加1;

無符號數預設為正數,無符號數沒有符號位:unsigned

有符號-10和無符號

5數相加時大於

0,因為有符號的被轉換為了無符號的;

▲for迴圈中自減的變數

i不能設定為無符號數,否則會無限迴圈

型別的轉換

char->short->int->unsigned int->long->unsigned long->float->double

for迴圈先進行判斷在進入迴圈體,適用於迴圈次數固定的場合

while迴圈先進性判斷再進入迴圈體,使用於迴圈次數不固定的場合

do... while 迴圈先執行迴圈體再進行條件判斷,迴圈至少執行一次迴圈體

while ( (scanf ( 「 %d , %d 」, &a , &b )) == 2 )

scanf ( 「 %*s」 ) ; 跳至下乙個空白字元,對返回的非所需要的在緩衝區的錯誤數值進行處理;

printf ( 「%p」 , p) ;

c小結 聽課筆記

1 c是基於作業系統的 2 對於乙個 malloc 指標也可以 free 但是會出現記憶體錯誤 如段錯誤 3 str 3 等價於3 str 等價於 str 3 因為 是進行位址運算 4 char dig char str 等價於char dig char str 5 遞迴呼叫會出現耗盡記憶體 棧記憶...

C 學習筆記 指標小結

1 宣告指標 typename pointername 型別 指標名 示例 double pn 指向double型別的指標 int pc 指向int型別的指標 2 給指標賦值 將記憶體位址賦給指標 1 用 運算子獲得被命名的記憶體的位址 指標名 變數名 2 用new運算子返回未命名的記憶體的位址 指...

c 學習筆記 5 11 小結

函式模板 類模板動態陣列類 向量類 鍊錶類集合類 棧類 先進後出 可以用於做乙個計算器 佇列類 先進先出 迴圈佇列 運用取餘的做法 讓頭到尾 尾到頭 類是對物件的抽象 而類模板是對類的抽象 但是人們還是不滿足 當兩個類模板 比如 集合類模板 與 鍊錶類模板 都有相似的演算法 add remove 那...