C 程式設計基本概念 知識點 小結

2021-07-04 12:31:58 字數 2911 閱讀 3384

【摘要】

知識點包括:全域性變數的二次賦值;計算轉化為二進位制後,數字中 1 的數量;用乙個非迴圈表示式判斷乙個數是否是2的n次方;邏輯運算與位邏輯運算;printf 輸入表示式的執行順序;型別轉換中字元截斷與數值大小的關係;位運算兩個數值的取平均與求和;無判斷語句求取變數中較大存在;無中間量交換變數;c/c++關係。

【正文】

1. 賦值語句

考點:int i=i // 全域性變數;

考點:與運算和按位與運算;

總結:== && ||屬於邏輯運算子,返回值為bool值

#include using namespace std;

int i = 1;

int main()

return con;

}

2. i++問題

考點:printf函式從右往左執行輸出資料;

考點:(++ptr) 該語句的下一語句才有 ptr = ptr+1;

#includevoid main()

; sint *ptr = arr;

*(ptr++) += 123;

printf("%d\n", *(ptr-1)); //輸出129

printf("%d\n", *ptr); //輸出7

printf("%d,%d\n", *ptr, *(++ptr)); //輸出8,8

}

3、型別的轉換

考點:作用是因為浮點數在記憶體裡和整數的儲存方式不同,這相當於把該浮點數字址開始的sizeof(int)個位元組當成int型的資料輸出,只有當a = 0時候,int a才會和int(&a)相同。

float a;

int(&a);

考點:unsigned char 與 char 位長;

考點:指標定址;

#includeint main()

輸出結果

000000f7

fffffff7

000000f7

press any key to continue

總結:前者為unsigned int 變數賦值給unsigned char變數時,會發生位元組的截斷,3位和高於3位的將會被程式自動丟棄;後者為將unsigned int 型指標轉化為乙個char型的指標,這個影響的是指標的定址。

4、運算子的問題

考點:運算子的優先順序;

考點:隱式型別轉換;

#includeusing namespace std;

int main()

執行結果為250.

總結:c/c++運算子優先順序口訣 ! ~ ++ -- & + - >> << == != ^ | && || ?:

詳見:c 語言運算子優先順序(記憶口訣)

詳址:首先將a和4的值轉換為 int 型,即所為整數提公升,再進行後續的運算。可以知道+優先級別比》要高,所以,先計算4+1故可以知道先取a反之後在右移5位。得到結果後,將數值轉換為 unsigned char ,再賦給 b。

這裡還有乙個特別容易錯的地方,我們不能將0xa5轉化為1010 0101我們應該寫成16進製制,之後因為unsigned char只能表示低8位的數值,所以為250。

考點:判斷乙個數是不是 2 的 n 次 冪

!(x & (x-1))

用乙個非迴圈表示式判斷乙個數是否是2的n次方,2^n即為二進位制的10,100,1000 ...

故,表示式為 0 ,則判斷為是2的n次冪。

考點:用乙個表示式取兩個數的平均值

return((x & y) + (x ^ y) >> 1)

x&y取相同的位與,相當於相同位置保留且折半;(x^y) >> 1取x和y的非進製加法,右移相當於折半,之後取平均。

考點:利用位運算實現兩個整數的加法運算

int add(int a,int b)

5、a、b交換與比較

考點:不使用判斷與選擇語句,找出兩個數中比較大。

int max = ((a+b) + abs(a-b))/2;

考點:無中間變數,交換a、b。

a = a ^ b;//用異或語句

b = a ^ b;

a = a ^ b;

6、c和c++的關係

1)在c++程式中呼叫被c編譯器編譯後的函式,為什麼要加extern "c"?

c++語言支援函式過載,c語言不支援,假設某個函式的原型為void foo(int x,int y)該函式被c編譯器編譯後在庫中的名字為_foo,而c++編譯器則會產生像_foo_int_int之類的名字,作用解決名字匹配的問題。

2)c語言是一種結構化語言,重點在於演算法和資料結構,c程式的設計首先要考慮的是如何通過乙個過程對輸入進行運算處理得到輸出;而對於c++首先要考慮的是如何構造乙個物件模型,讓這個模型能夠契合與之對於的問題域,通過獲取物件的狀態資訊得到輸出或實現過程的控制。

彙編知識點 基本概念

組合語言由三類指令組成 彙編指令,偽指令,其他符合 彙編指令是轉換為機械碼的指令.偽指令和其他符合都只是便於人理解,編寫的指令.他們沒有對應的機械碼,而是由編譯器執行.在記憶體或磁碟上,指令和資料沒有區別 它們都是資訊.這就是一切漏洞的根源,指令和資料無法區分.乙個儲存器有128個儲存單元 位元組 ...

c 知識點小結

1 sha1加密 using system.security using system.security.cryptography public static string sha1signature string str c sha1演算法實現及注意問腿 2 c 獲取時間方法 datetime.n...

網路程式設計知識點小結

目錄二 socket c s 客戶端和伺服器 b s 瀏覽器和伺服器,本質上還是客戶端和伺服器 tcp 基於資料流的可靠協議 三次握手 四次揮手 udp 基於資料報的不可靠協議 在傳輸層和應用層之間的一層抽象層,可以操作網路層和傳輸層 1 socketserver模組實現tcp簡單通訊 服務端 匯入...