a=b++先賦值再自增;a=++b先自增再賦值;
(float)6/4是1.500000;(float)(6/4)是1.000000;
原始檔.c;目標程式.obj;執行程式.exe;都是二進位制檔案;
源程式以ascii**形式存於文字檔案;
c程式演算法可無輸入必須要有輸出;
三種基本結構可以完成任何複雜的任務;
大括號內是復合語句;
c語言基本組成單位:語句;
0%2==0;1%2==1;-10%2==0;-10%-2==0;10%-2==0;-11%2==-1;11%-2==1;-11%-2==-1;1.0%2和1%0.2錯誤
%03d至少三位輸出,不夠填0;%.3f保留3位小數不夠填0;
switch內case無break後面將一直執行;
&&優先順序高於||;
100>90>2是0;相當於1>2;
函式不定義返回值型別,預設int;
函式內static只在第一次呼叫賦值,以後再呼叫不在賦值,函式結束後記憶體不被**;
實參可以常量、變數、表示式,形參只能變數;
double型別只能lf,不然可能出錯;
printf("%d",(1,2,3));輸出3;
計算機處理、儲存、計算所有資訊都是二進位制,所有位運算要比正常快點;
1位元組=8位元;
浮點小數點後預設6位;
%ddd八進位制,%xhh十六進製制;%o八進位制,%x十六進製制;
『0』==0字串自動在結尾加,strlen唯讀到第乙個『0』;' '==32;
a=a+(a=10); 相當於a==20;
陣列名常量,存放陣列記憶體空間首位址,不可賦值;
char a="abc",sizeof為4;char a[3]="abc"報錯;
位址不是整數,需要強制(int)後是整數,不可直接給指標賦值整數;
++p和++p不同;
結構體後要用分號,因為是語句;
.成員運算子;->指向運算子;
結構體可以直接a==b賦值;
以陣列為引數會改值,以結構體為引數不改值;
巨集是替換不是函式,巨集在編譯預處理時完成,函式在編譯中執行;
編譯預處理:條件編譯、巨集定義、檔案包含;
(a+1)==a0;(a+1)==a1;a+1==a0+1;
二維陣列a==&a[0],a[0]==&a0,a==&&a0;
*a==a[0]==a0;*a=&a[0];
%s和%c一起輸入要getchar();
單鏈表末尾要有null;
fp指向記憶體緩衝區(記憶體單元);不能fp++;是順序性的;
file型別結構單元16b,緩衝區單元512b,寫滿進入磁碟扇區;
fclose(fp)==0正常關閉;feof(fp)==1檔案結束;eof==-1;
strcat認到0開始逐字元覆蓋;
fseek(fp,-20l,2)距離檔案尾部20位元組處,0首1現2尾;
w+、w完全覆蓋,文字清空後重寫;r+逐字覆蓋;rewind後w,r+,w+逐字覆蓋;a,a+永遠追加;
char a[4];a[2]='3';strlen(a)==0;
檔案由資料流組成;
a=b=4=8錯誤;b+3=9錯誤;
函式內部不可以定義函式,只能宣告,呼叫;
-a=b=c=8;a=(b+=c,++c);a,b,c為9169;
int (a)[10],b[10];a是乙個指標,要用只能指向二維陣列,b是一維指標型陣列,b[0]是乙個陣列;
sizeof("tn0")==4;
sizeof("")==1,sizeof(" ")==2;
C語言細節
參考 注釋必須和 一起維護,不應該描述顯而易見的事,或把別的地方已說清楚的東西在說一遍。字面常量沒有語義,也沒有真正的記憶體位址。所以不可以取其位址,也不可以用於初始化普通引用,例如 long r1 40000 但是const long r1 40000 卻是合法的。所以,盡量不要使用字面常量,而應...
C語言細節
1.c誰呼叫了main函式 linux執行乙個程式就是建立乙個新程序,然後把這個程式丟到這個程序中執行直到結束。linux通過.task執行程式,新程序作為命令程序的乙個子程序執行。main函式的返回值最終會返回給父程序。父程序的引數傳遞給子程序。2.void型別的本質 void的意思是乙個變數還不...
C 語言細節總結
include intmain int int2 10 double double1 double double2 10 printf sizeof str1 d,sizeof str2 d r n sizeof str1 sizeof str2 printf sizeof int1 d,sizeo...