C 語法易錯點(不斷更新中)

2021-08-17 05:32:57 字數 1769 閱讀 9046

在刷leetcode中遇到了一些語法問題,在這裡記錄一下,也希望能對其他人有幫助

i++  :先引用後增加

++i :先增加後引用

i++ :先在i所在的表示式中使用i的當前值,後讓i加1

++i :讓i先加1,然後在i所在的表示式中使用i的新值

i+=2相當於i=i+2;

i=+2就是i=2;//這裡的+為正號,也可以不寫

看乙個例子

int x;

float curr = x/2;//這裡相當於兩個int型變數相除,得到的結果四捨五入保留整數部分,還是乙個int型變數,然後賦值給curr

int x;

int curr = (float)x/2;//這裡相當於把x提公升成float型別,這樣以後x/2的結果就是乙個float型別,精度不會丟失

int x;

int curr = (float)(x/2);//這樣做x/2的精度會有丟失,這樣做會先求x/2,得到乙個整數結果;然後講計算結果提公升到float型,這時的精度已經丟失了

這個時候要檢查兩個地方:

1.控制迴圈的條件是否正確;

2.控制迴圈的變數是否正確。

abs()返回的是整數;

fabs()返回float型別。

map變數想要改變value值,應該採用直接賦值的方法,不能用insert方法,insert不會改變原來的value值。

map_s.insert(pair(s[i], i));//map的插入形式

map[key].push_back(value);//key可以是string也可以是int

iterator是迭代容器,這樣寫相當於mv的頭指標,iter++則指向下一位 

for(map<

string

, vector

<

string

>

>

:: iterator 

iter=mv

.begin(); iter!=mv.end(); iter++)  

1.一維vector:sort預設對vector進行公升序排列(從小到大)

2.對string排序:string中的字母按字典序排列(來自leetcode 49.group anagrams)

3.對vector排序:vector各個元素是按字典序排列的,每個vector元素是string,也是按字典序排列。

4.sort進行降序排列:需要自己寫乙個函式,放到sort的引數列表中。

bool cmp(int a,int b)

* interval(int s, int e) : start(s), end(e) {}

* };

*/

如果對start進行公升序排列,那麼cmp函式應該這樣寫:

static bool comp(interval& a, interval& b){

return a.start

end() 函式返回乙個指向當前vector末尾元素的下一位置的迭代器.要訪問末尾元素,需要先將此迭代器減1。

back() 函式返回當前vector最末乙個元素的引用。

見leetcode

77.c

ombinations

如果要比較vector最後乙個元素與它前乙個元素的大小,應該這麼寫:

if( tem.back()<*(tem.end()-2) )//判斷最後乙個元素是否小於它前乙個元素

Python技巧 不斷更新中

1.讀取檔案的內容 filepath 檔案路徑 lambda f f.read f.close file filepath 0 2.將內容寫入到檔案中 lambda f,d f.write d f.close file r d a.txt w 要寫入的資料 3.根據正規表示式過濾資料夾中的檔案 im...

C 學習積累 不斷更新

分享乙個c 的學習 1.結構體 struct 所有的成員在預設條件下都是 public 類 class 所有資料成員在預設條件下都是private 2.建構函式 採用的是類名,前邊不需要加返回值。3.在定義的類後邊一定要加 例如 void 4.類的繼承。include class animal vo...

C語言基礎(不斷更新)

1.memcpy memmove memccpy的區別 字串函式功能查詢 memcpy要求源串和目的串不能重疊 memccpy copy直至遇到由引數指定的ch.memmove 源串和目的串可以重疊。2.strcpy寫法 面試常考題型之strcpy寫法 注意丟擲異常,如果指標無效,丟擲異常,thro...