翁凱C語言



c的四種類型


printf("sizeof(int)=%ld",sizeof(int));
是靜態(tài)運(yùn)算符

a+1.0強(qiáng)制類型轉(zhuǎn)換把a(bǔ)變成float,但是沒有加上1
表達(dá)負(fù)數(shù):

1&2不好的理由
補(bǔ)碼:-1=0-1,a=2n方-a
unsigned


小于int輸出都用%d
a++是先進(jìn)行賦值運(yùn)算,就是b=a,然后a再加1;
b=3;????a=5;
b=a++;????b=5;
b=++a;????b=6

總結(jié):一般都用int

%f
用%e(E)可以輸出科學(xué)計(jì)數(shù)法


整數(shù)無法表達(dá)無窮大,所以12/0沒有意義
a=1.345f表示a的類型是浮點(diǎn)數(shù)(沒搞懂)

不能用==來做相等判斷
算數(shù)的時(shí)候不能用浮點(diǎn)數(shù),誤差會(huì)累積,可以整數(shù)小數(shù)分別進(jìn)行運(yùn)算。

浮點(diǎn)數(shù)是個(gè)編碼的形式,用專門的部件進(jìn)行運(yùn)算



輸入了i之后要按回車or空格才能開始輸入下一個(gè),沒有空格的話你按的那個(gè)空格就會(huì)被當(dāng)作c的輸入
沒有空格的話,%d就只讀到整數(shù)結(jié)束為止,后面那個(gè)(空格)就給后面的東西讀。

c=i,因?yàn)閏har又是整數(shù)又是表格嗎
輸出字符'',

\"
printf("請(qǐng)輸入數(shù)字,如輸入\"5\"");
(其實(shí)用中文的引號(hào)就沒問題了)

printf("123\b\n456\n");
為啥在黑框(shell)里不同。
我們寫的程序交給shell(別人寫的程序)來運(yùn)行,shell讀入我們鍵盤的輸入,再把電腦的輸出經(jīng)過加工給我們看到。

printf("123\bA\n456\n");
BLACKSPACE要回到上一個(gè)位置但不一定刪除,如果你不繼續(xù)輸出東西,就沒什么區(qū)別了。
\t
TABLE鍵,每一行固定的位置而不是固定的字符數(shù)。


所以輸出只有%d和%l

(short)32768==-32767


實(shí)際上bool還是個(gè)整數(shù)類型


與或非
表達(dá)4<x<6:4<x&&x<6
判斷字符c是否是大寫字母:
c>='A'&&c<='Z'





meidong

例子:


不好,因?yàn)椴皇菃我怀隹冢?/p>


把函數(shù)a的頭復(fù)制在最前面
(在函數(shù)b中使用,聲明放在b的外面
;讓編譯器知道函數(shù)的變量和返回類型
可以不寫參數(shù)名稱:
void sum(int ,int )

如果給的參數(shù)類型和規(guī)定的不一定
在c語言中沒關(guān)系,
他會(huì)自動(dòng)進(jìn)行轉(zhuǎn)換,2.4-->2
c語言在調(diào)用函數(shù)時(shí),永遠(yuǎn)只能傳值給函數(shù)
每個(gè)函數(shù)都有自己的變量空間,參數(shù)也位于這個(gè)獨(dú)立的空間中,和其他函數(shù)沒有關(guān)系。



i的生存期取決于a,b的大小關(guān)系

聲明中swap()
表示不確定有沒有參數(shù),編譯器會(huì)猜測需要兩個(gè)int的參數(shù)
所以不要寫這種



(這個(gè)我用兩個(gè)for寫不出來www要再試一下)
先做一輪scanf再進(jìn)入循環(huán)也

for,while&if語句的差異

int a[10];
a[0]~a[9]

(關(guān)于本地變量 )

可以用switch case;

(10用 const int number=10代替)
初始化的for循環(huán)可簡化為int count[number]={0};

1.a[]={2,4,3,5};
2.a[12]={2};
(第一個(gè)是2,其他都是0)
3.a[3]={[1]=2};
(第2個(gè)是2,其余是0)

for(i=0;sizeof(a)/sizeof(a[0]);i++)
這樣可以變動(dòng)數(shù)組大小而不用修改其他部分






(||和&&的優(yōu)先級(jí))

如何知曉函數(shù)的詳情

套路:prime[count++]=i;//一行做了兩件事
在調(diào)試的時(shí)候加{},我們可以在里面定義自己的本地變量




調(diào)試代碼
a[i][j]






printf(“0x%x”,&i)
printf(“%p”,&i)
%p把變量作為地址類型輸出

地址的大小取決于你是64還是32架構(gòu)
強(qiáng)制類型轉(zhuǎn)換
32位 地址是4個(gè)字節(jié) 64位 地址是八個(gè)字節(jié)

(所以地址和整數(shù)不一定相同)
&(i+p) x
c語言地址分配由上至下,先定義的變量地址更大



*表示這里p是一個(gè)指針,它指向的是一個(gè)int類型的變量
是把*加給了p,q還是個(gè)int



讀寫變量








試圖往0的地方寫12
a[]是指針
int *a






不能通過p修改i,


1.是保證在函數(shù)內(nèi)部不會(huì)動(dòng)指針?biāo)傅闹?/p>



sizeof(char)=1;sizeof(int)=4;
p+1=加上個(gè)sizeof(類型)

數(shù)組和指針可以混用。。。??

p+1指向的就是ac[1],沒得意義了。


p1-p得出這兩個(gè)之間能放幾個(gè)int類型的東西




虛擬地址


q=p x

(初學(xué)不具備太多意義)
