C 程式設計小技巧

2021-08-15 06:17:33 字數 916 閱讀 1861

定義常量並賦乙個很大的值

方法一:

int minarea = 1 << 30;
minarea = 1073741824,《表示將乙個運算物件的各二進位制位全部左移若干位(左邊的二進位制位丟棄,右邊補0)。

例:a = a << 2 將a的二進位制位左移2位,右補0,左移1位後a = a * 2; 若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。1<<30 表示1左移30位,每左移一位乘以2,所以就是1*2^30=1073741824。

方法二:

unsigned int x = 0,則 x-1 等於unsigned int型別的最大值。根據不同編譯器的unsigned int大小不同得出的結果不同,vc6.0的結果為4294967295即2^32-1。該技巧常用語為unsigned int初始最大值。

方法三:

infinity

取中間數

int middle = ((end - start) >> 1) + start;

//>>運算規則:按二進位制形式把所有的數字向右移動對應巍峨位數,低位移出(捨棄),高位的空位補符號位,

//即正數補零,負數補1.

除以2

n >> 1

判斷是否為奇數

if ((n & 0x1) == 1)

用合理的編碼表示「狀態」,減小儲存代價

二、8.2.1 廣搜與八數碼問題(coursera 程式設計與演算法 專項課程4 演算法基礎)

C 程式設計小技巧

1.乙個應用程式只能被使用者開啟一次 process mobj pro process.getcurrentprocess process mobj prolist process.getprocessesbyname mobj pro.processname if mobj prolist.len...

C 程式設計小技巧

1 使用常量引用形式,將map作為形參傳遞時的問題 void test const unordered map um 上述 將不能通過編譯。原因 map的運算子會在索引項不存在的時候自動建立乙個物件,而常量不能改變。解決辦法 使用迭代器替換即可,如下例所示。void test const unord...

C 程式設計小技巧

記錄c 開發過程中遇到一些小技巧,隨時更新 xml xmlignore public bool login 序列化成xml的時候忽略本欄位 json newtonsoft.json.jsonignore public string devicetype 序列成json的時候忽略本欄位 xmlelem...