程式設計技巧的零散學習

2021-07-09 01:35:04 字數 1543 閱讀 4146

1、不使用if/:?/switch及其他判斷語句如何找出兩個int型變數中的最大值和最小值?

int

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

intmin=((a+b)-abs(a-b))/2;

2、比較運算子(> >= < <=)運算順序是從左往右,賦值運算子運算順序從右向左

3、如何使用一條語句實現x是否為2的若干次冪的判斷?

如果乙個數為2的若干次冪,則其二進位制的最高位肯定為1,其他位為0,該數減去1後其二進位製全為1,將兩數進行與操作,判斷結果是否為0,可以實現判斷x是否是2的若干次冪

(i&(i-1))?true:false
4、逗號表示式

逗號表示式的運算過程為從左往右逐個計算表示式;逗號表示式作為乙個整體,它的值為最後乙個表示式的值;逗號運算子的優先順序在所有運算子中最低。

5、\n與\n\r

換行(\n)就是游標下移一行卻不會移到行的開頭,回車(\r)就是回到當前行的開頭卻不向下移一行

按enter鍵就是\n\r,一般意義上的回車

tab是製表符\t,作用是預留8個字元的顯示寬度,用於對齊

6、短路求值

所謂的短路求值就是對於(條件1&&條件2),若條件1是false則條件2的表示式會被忽略。對於(條件1||條件2),若條件1為true,則條件2的表示式則被忽略了。

7、printf(「%p\n」,(void*)x)與printf(「%p\n」,&x)有什麼區別?

printf(「%p\n」,(void*)x):語句列印x被轉換為指標的位址,就是它的值。

printf(「%p\n」,&x)將列印變數x的位址。

8、printf()函式是否有返回值?

有,printf()函式返回乙個int值,表示被列印的字元數

#include

using

namespace

std;

int main()

//程式輸出結果

//1234

//5//2

注意:』\n』也佔據乙個字元

9、不能使用任何變數,實現計算字串長度函式strlen()

int strlen(const

char* s)

10、負數除法與正整數除法的運算原理

除號的正負取捨和一般算數一樣,符號相同為正,相異為負;

求餘符號的正負取捨與被除數符號相同。

11、main()函式執行完畢後,是否可以再執行一段**?

可以。比如用_onexit註冊乙個函式,它會在賣你之後執行int fn(void)。需要注意的是,使用_onexit函式需要新增標頭檔案stdlib.h,否則會編譯錯誤

#include

#include

int fn()

int main()

//程式輸出結果

//this is executed first

//next

C 零散學習1

c 零散學習1 結構體 與c語言相似 struct position 宣告和訪問 position enemyposition enemyposition.x 10 物件名.結構體成員變數名 foreach遍歷陣列 foreach int temp in 陣列名 引數陣列與陣列引數 修飾符 型別名 ...

C OpenCV 零散學習總結

opencv中mat基本用法 mat類 matrix的縮寫 是opencv用於處理影象而引入的乙個封裝類。從功能上講,mat類在iplimage結構的基礎上進一步增強,並且,由於引入c 高階程式設計特性,mat類的擴充套件性大大提高。mat image 240,320,cv8uc3 第乙個引數是ro...

程式設計時的零散筆記

筆記內容多是程式設計時所遇到的問題,通過上網查資料以及詢問他人所得,將它們記錄下來。1 建立執行緒之後為什麼要使用closehandle 來關閉控制代碼?為什麼closehandle之後執行緒還繼續執行呢?建立執行緒後返回了執行緒控制代碼,新建立的執行緒核心物件的使用計數是2,乙個是執行緒本身,乙個...