C避坑指南

2021-10-04 05:08:15 字數 2233 閱讀 3604

int型:絕對值在10^9範圍內的整數都可以定義成int型。

long long型:如果long long型賦值大於2^31 -1的初值,則需要在初值後面加上ll,否則會編譯錯誤。

float、double輸入輸出格式:使用printf("%f",c);語句時,%f是float和double型的輸出格式。而在使用scanf輸入時,float輸入格式為%f,double輸入格式為%lf。

if條件:由於if(n)表示if(n!=0),所以if(!n)表示if(n==0)

for語句:注意在c語言中不允許在for(a;b;c)語句的表示式a裡定義變數(比如inta=0;的寫法是不允許的),但在c++中可以

陣列定義:如果陣列大小較大(10^6級別以上),則需要將其定義在主函式外面,否則會使程式異常退出。

陣列賦初值:如果我們定義乙個陣列int array[10]=;可知只對陣列的前四項賦值,那麼後面沒有賦值的元素預設為0.但如果該陣列沒有賦初值,陣列中的每個元素都可能會是乙個隨機數(不一定是0)。所以如果想給整個陣列都賦值為0,簡單介紹以下四種方法:

1、int array[10]={};

2、int array[10]=;

3、memset函式 :

memset(array,0,sizeof(array));//若陣列為int array[10],則此處sizeof(array)=4*10=40,因為

memset是按位元組賦值. 格式 memset(陣列名,值,sizeof(陣列名));

4、fill函式 :

fill(array,array+5,8);//陣列從array[0]到array[4]均被賦值為8,格式 fill(起始位址,結束位址,值);

注意:memset()函式需標頭檔案或. 且memset()只能為陣列賦初值0和-1,因為memset()只能以位元組為單位賦值fill()函式需標頭檔案. 且fill()可以為陣列或容器的某段區域賦某個任意相同的值.

二維陣列賦值:若二維陣列array[4][5]=,,{},};可以看出第三行用{}跳過了(如果不加大括號是無法通過編譯的)

字元陣列初始化:字元陣列可以通過直接賦值字串來初始化(僅限初始化,程式其他位置不允許這樣直接賦值整個字串)

字元陣列輸入輸出:定義

char str[10];

scanf("%s",str);

pritnf("%s",str);

注意字元陣列在輸入時不需要加&取位址運算子. 且scanf輸入時%s通過空格或換行來識別乙個字串的結束

gets用來輸入一行字串.gets識別換行符n作為輸入結束,因此scanf完乙個整數後如果要使用gets,需要先用getchar接收整數後的換行符;puts輸出一行字串後會緊跟乙個換行(n)

字元陣列長度的重要性:字元陣列的長度一定要比實際儲存字串的長度至少多1,作為結束符'0'.注int型陣列不需要. 且如果不是使用scanf函式的%s格式或gets函式輸入字串(例如getchar),一定要手動早輸入的每個字串後加『0',否則printf和puts輸出字串將無法識別字串末尾而輸出一大堆亂碼.

sscanf與sprintf:

sscanf :

int n;

char str[10]="123";

sscanf(str,"%d",&n); //sscanf寫法的作用是把字元陣列str中的內容以"%d"的格式寫到n中(從左往右). sscanf還支援正規表示式.

sprintf :

int n;

char str[10]="123";

sprintf(str,"%d",n); //sprintf寫法的作用是把n以"%d"的格式寫到str字元陣列中(從右往左)

引用&:注意要把引用的&與取位址運算子&區分開. 引用並不是取位址的意思,引用不產生副本,而是給原變數起了個別名 .由於引用是產生變數的別名,因此常量不可以引用。

訪問結構體內的元素:

訪問stu中變數的寫法:

stu.id

stu,name

stu.next

訪問指標變數p中的元素的寫法:

(*p).id <=> p->id

(*p).name <=> p->name

(*p).next <=> p->next

本文**於csdn

python避坑 python避坑指南,持續更新

python安裝,匯入,和使用避坑指南,持續更新 bestmrright原創 因為python庫太多,開發者眾多,有些庫引用了其他庫,隨著其他庫不斷更新,有些類和方法會修改,有些庫作廢,有些庫被收入進python,所以使用時候經常有坑需要迴避。在此建貼,持續更新,以便後來者避坑,希望來著補充。安裝坑...

MySQL left join 避坑指南

這裡我先給出乙個場景,並丟擲兩個問題,如果你都能答對那這篇文章就不用看了。那麼現在有兩個需求 找出每個班級的名稱及其對應的女同學數量 找出一班的同學總數 對於需求1,大多數人不假思索就能想出如下兩種sql寫法 正確 select c.name,count s.name as num from cla...

tcc transaction避坑指南

這篇文章就講解一些使用要避免使用tcc的一些坑。但在實際開發首先還是看如何減少業務邏輯的複雜度,盡量避免使用tcc進行分布式事務管理,因為使用了tcc就說明業務本身有些複雜,畢竟需要呼叫多個其他服務進行增 刪 改處理。compensable confirmmethod confirmmakepaym...