C與C 中的運算子和常用函式的使用

2021-07-11 22:50:08 字數 2076 閱讀 9245

運算子

邏輯運算子

& 位邏輯與

如果b是奇數,那麼結果就為1;反之偶數,則為0.

| 位邏輯或

- 位邏輯反

^ 位邏輯異或

如果a、b兩個值不相同,則異或結果為1。如果a、b兩個值相同,異或結果為0。0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0

快速比較兩個值

判斷兩個int數字a,b是否相等,你肯定會想到判斷a - b == 0,但是如果判斷a ^ b == 0效率將會更高

奇偶判斷

按位取反  ~

左移<<

左移一位相當於該數乘以2,左移2位相當於該數乘以2^2=4

帶符號右移  >>

無符號右移  >>>

常用函式

cmath標頭檔案下的三個個取整函式

floor(x)(有時候也寫做floor(x))

功能:「向下取整」,或者說「向下捨入」,即取不大於x的最大整數

ceil(x)

功能:「向下取整」

兩個取整函式返回的型別都是 double

round(x)

功能:返回x的四捨五入整數值。

#include#includeint main()

/*3.14

3.00

4.00

3.00

*/

如果up、down和p是int型別,那麼結果就是整數,這應該有強制轉換?不清楚……

string類中的函式

substring函式

str.substring(i, j)表示字串str中從位置i到位置j的子串,如果i>j則,substring為空
string自身的find函式,從下標 lastpos+1 開始,查詢字元 ','

string s;

int p = s.find(',', lastpos+1);

unique()函式

unique() 是「去重」函式,但不是真正的去重

標頭檔案是 iostream

使用這個函式的前提是元素已經是有序的了,why?

因為不是真正的去重嘛,重複的會被放到位址a及其後面,a前面的都是單個不重複的

例如c長度的v陣列

sort(v,v+c);

c = unique(v,v+c) - v;

函式會返回a的位址,我們再減去首位址,就是不重複的個數了

現在說為什麼有序呢,因為這個函式只對相鄰的元素操作,so

標頭檔案:algorithm

兩個函式的使用物件都是非遞減序列,都是按照二分查詢的方式查詢

upper_bound(x,x+n,y) (在x陣列裡面查詢y)

返回值是位址

upper_bound()函式:返回第乙個  大於y  的位置。

是查詢大於y的第乙個位置,

也可以查詢x陣列中小等於y的個數,upper_bound(x,x+n,y) -x

lower_bound()函式:返回第乙個   大於等於 y   的位置。

strstr() 函式

標頭檔案:string.h / cstring

作用:strstr

(str1,str2) 函式用於判斷字串str2是否是str1的子串。

如果str2是str1的子串,那麼返回值是str2在str1出現的首位址;如果不是,返回null。

stristr()與strstr

()函式區別就是前者可以不區分大小寫,而後者區分。

atoi函式

atoi函式(表示 ascii to integer)是把字串轉換成整型數的乙個函式

標頭檔案    #include

memcpy函式

拷貝函式       標頭檔案:string.h / cstring

從源src所指的記憶體位址的起始位置開始拷貝n個位元組到目標dest所指的記憶體位址的起始位置中

memcpy(bestp, p, sizeof(p));

將p拷貝到bestp

C 中 運算子 和 運算子

運算子定義在將可空型別分配給非可空型別時返回的預設值。int?c null 若 c 為 null,則 d 為 1,否則把 c 值賦予 d int d c 1 型別名稱後加問號,如 int?i null double?d null bool?b null 可指定可為 null 的 int double...

C 中的 和 運算子

和 運算子 構串操作符 構串操作符 只能修飾帶引數的巨集的形參,它將實參的字串行 而不是實參代表的值 轉換成字串常量 define string x x x x define text x class x info 巨集引用 int abc 100 string abc text abc 替換結果 ...

C 中的is和as運算子

is運算子 有些型別之間的轉換並不是能夠轉換成功,強制的轉換反而會丟擲一些異常,那麼,可以使用is運算子來檢查轉換是否可以轉換成功。is的語法如下 variable is newtype 如果variable可以通過引用轉換 裝箱轉換和拆箱轉換的方式轉換為newtype,那麼運算子返回true。舉例...