本節(jié)引言
在上一節(jié)中膜钓,對于C語言有了一個(gè)初步的了解枝秤,學(xué)會(huì)了如何使用IDE來進(jìn)行?
代碼編寫醋拧,編譯和運(yùn)行。而這一節(jié)淀弹,我們會(huì)對C語言的基本語法進(jìn)行學(xué)習(xí)丹壕,?
C語言是一門編程語言,可以和英語進(jìn)行類比薇溃,英語句子 = 單詞 + 語法菌赖,?
同樣C語言的代碼語句,也有著自己的一套規(guī)則沐序。
何為標(biāo)識(shí)符琉用?
在C語言中,符號(hào)常量,變量,數(shù)組,函數(shù)等都需要一定的名稱,我們把這種名稱成為標(biāo)識(shí)符
標(biāo)識(shí)符劃分?
關(guān)鍵字,預(yù)定義標(biāo)識(shí)符和用戶標(biāo)識(shí)符策幼!
標(biāo)識(shí)符的命名規(guī)則邑时?
只能夠由字母,數(shù)字特姐,下劃線晶丘,或者美元符號(hào)($)組成,且不能以數(shù)字開頭;?小編推薦一個(gè)學(xué)C語言/C++的學(xué)習(xí)裙【 六二七,零一二唐含,四六四 】浅浮,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)捷枯!裙內(nèi)有開發(fā)工具脑题,很多干貨和技術(shù)資料分享!
C語言區(qū)分大小寫铜靶,通常變量名和函數(shù)名都用小寫字母表示;?
雖然沒有規(guī)定名稱的長度叔遂,但還是別寫太長,最好是見名知義争剿,比如int max一看就知道?
是用來存放最大值的!還有已艰,不能和下面的32個(gè)C語言的關(guān)鍵字重名哦!以及C語言?
中系統(tǒng)先定義的標(biāo)識(shí)符蚕苇,如系統(tǒng)類庫哩掺,系統(tǒng)常量名系統(tǒng)函數(shù)名,?
如(格式輸出函數(shù):printf())涩笤;重名嚼吞!
何為關(guān)鍵字盒件?
C語言中具有特殊含義的英文單詞,通常用于構(gòu)成語句,存儲(chǔ)數(shù)據(jù),定義數(shù)據(jù)類型等
C語言里的32個(gè)關(guān)鍵字參照圖,不用記舱禽,用到的時(shí)候再去了解炒刁!
空白符:在程序中加入適當(dāng)?shù)目瞻卓s進(jìn)代碼,會(huì)使得程序更加清晰易讀誊稚。小編推薦一個(gè)學(xué)C語言/C++的學(xué)習(xí)裙【 六二七翔始,零一二,四六四 】里伯,無論你是大牛還是小白城瞎,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具疾瓮,很多干貨和技術(shù)資料分享脖镀!
普通分隔符
分號(hào)「?;?」:語句結(jié)尾
大括號(hào)「?{ }?」:函數(shù)體,復(fù)合語句以及數(shù)組的初始化等狼电;
圓括號(hào)「?()?」:函數(shù)定義時(shí)用來括住參數(shù)蜒灰,或者用來修改運(yùn)算順序,?
比如:(a + 1)?2 和 a + (1?2)
方括號(hào)「?[]?」定義數(shù)組類型和應(yīng)用元素漫萄,比如: int a10; b = a3;
點(diǎn)號(hào)「?.?」:結(jié)構(gòu)體仲引用成員
逗號(hào)「?,?:參數(shù)分隔卷员,比如:int a,b,c;
注釋符:?// 單行注釋, /**/多行注釋
注意:這里沒有給出數(shù)據(jù)類型的取值范圍與精度域?qū)挼龋詾樵诓煌挠?jì)算機(jī)?
字長與系統(tǒng)環(huán)境下占用的內(nèi)存空間是不一樣的,可以通過sizeof獲得對應(yīng)數(shù)據(jù)類?
型在該系統(tǒng)環(huán)境下所占的字節(jié)腾务,從而算出對應(yīng)數(shù)據(jù)類型的取值范圍毕骡!
整型:用于準(zhǔn)確地表示整數(shù),根據(jù)表示范圍的不同分為以下三種:?
短整型(short) < 整型(int) < 長整型(long)
實(shí)型(浮點(diǎn)型):用于標(biāo)識(shí)實(shí)數(shù)(小數(shù))根據(jù)范圍和精度不同分為以下兩種:?
單精度浮點(diǎn)數(shù)(float)?<?雙精度浮點(diǎn)數(shù)(double)?
注意:float只能夠保證7位數(shù)字是有效的!!!
字符型?: 用來描述單個(gè)字符,char?
除了上面三種以外,還可以使用long?short?signed?unsigned?來修飾不同的數(shù)據(jù)類型:?
(char只能用后面兩個(gè)),有符號(hào)與無符號(hào)的區(qū)別是:最高位是否為符號(hào)位,?
即最高位是否用于表示數(shù)的整負(fù);我們可以添加unsigned來保證此數(shù)據(jù)為正數(shù),?
同時(shí)對應(yīng)的數(shù)據(jù)范圍由0到原來的最大值 * 2
數(shù)組,指針,結(jié)構(gòu)體,共用體,枚舉岩瘦,指針類型,文件類型,空類型(void)未巫,后面會(huì)學(xué),這里不講启昧。
整型常量
除上述三種外叙凡,還可以在常量后面添加后綴:L或者U,比如:?
108L表示長整型的常量密末,與108雖然數(shù)值相等握爷,但分配的內(nèi)存空間大小是不一樣的;?
0xA3U:表示無符號(hào)位的十六進(jìn)制數(shù)0xA3
實(shí)型常量
Tips:所謂的規(guī)范化的指數(shù)形式就是:小數(shù)點(diǎn)左邊有一位非零的數(shù)字(只有一位)?
比如:2.4E3 是對的严里,而0.1E5 則是錯(cuò)的新啼。
字符常量
附上C里的轉(zhuǎn)義字符:
轉(zhuǎn)義字符作用轉(zhuǎn)義字符作用轉(zhuǎn)義字符作用轉(zhuǎn)義字符作用
\n回車換行\(zhòng)t水平制表\v垂直制表\b退格
\r回車不換行\(zhòng)f走紙換頁\0控制符\\右斜線
\'單引號(hào)\"雙引號(hào)\a響鈴
字符串常量
用一對雙引號(hào)括起來的或者多個(gè)字符構(gòu)成的字符串序列,如:?
“”,”apple”,”+-*/@#$%”
系統(tǒng)會(huì)在存儲(chǔ)字符串的時(shí)候自動(dòng)加上:‘\0’刹碾,字符串結(jié)束的標(biāo)志?
如:”a”這個(gè)字符串占兩個(gè)字節(jié)燥撞,因?yàn)榇鎯?chǔ)的時(shí)候其實(shí)是:”a\0”
符號(hào)常量
又叫宏常量,是一個(gè)預(yù)處理命令:#define 常量名 常量值
定義后,程序所有出現(xiàn)這個(gè)標(biāo)識(shí)的地方都可以用這個(gè)常量來代替:?
如: #define PI 3.1415926 s = r * r * PI物舒,這里的PI就是3.1415926
什么是變量?
答:程序運(yùn)行過程中,他的值可以改變的數(shù)據(jù),代表著一個(gè)存儲(chǔ)空間,需要用變量名?
來找到這個(gè)數(shù)據(jù)就像:你去超市,放東西到儲(chǔ)物柜的一格,他會(huì)給你一張紙條,你根據(jù)?
這個(gè)紙條才可以拿回自己的東西儲(chǔ)物柜的一格就是變量的內(nèi)存空間,字條就是變量名,?
你拿和放就是修改變量名對應(yīng)內(nèi)存中的數(shù)據(jù)色洞。
變量的使用:
一個(gè)簡單的 int a = 123;其實(shí)暗地里執(zhí)行了以下操作
int a:在內(nèi)存中開辟了四個(gè)字節(jié)的內(nèi)存空間,并且為這個(gè)空間起了個(gè)名字,叫做a;
后面的=123,這一步完成的是變量的初始化,就是通過a這個(gè)變量名,往4個(gè)字節(jié)的?
內(nèi)存中放入123這個(gè)數(shù)據(jù)
Tips:
一個(gè)好的建議是,當(dāng)我們定義一個(gè)變量時(shí),對其進(jìn)行初始化,可以有效的?
避免空指針問題的出現(xiàn);
你可以通過&a獲得存放123這個(gè)數(shù)據(jù)的內(nèi)存地址的值冠胯!
經(jīng)典例子:倒序輸出五位數(shù)
#includeint main()
{
? ? int a,i;
? ? printf("請輸入需要倒序輸出的五位數(shù)\n");
? ? scanf("%d",&a);
? ? printf("輸出倒序后的五位數(shù):\n");
? ? for(i = 0;i<5;i++)
? ? {
? ? ? ? printf("%d",a%10);
? ? ? ? a /= 10;
? ? }
? ? printf("\n");
? ? return 0;
}
經(jīng)典例子:
#includeint main()
{
? ? int a = 1,b = 2,c = 3;
? ? int x,y;
? ? x = a + b == c;? ? //結(jié)果為1為真
? ? y = 11 >b != a;? ? //11 >b 結(jié)果為真,即為1, 1 != 1,假
? ? printf("x = %d,y = %d\n",x,y);
? ? return 0;
}
經(jīng)典例子:判斷某一年是否為閏年
#includeint main()
{
? ? int year;
? ? printf("請輸入需要判斷的年份:\n");
? ? scanf("%d",&year);
? ? if(!(year%4)&&year%100 || !(year % 400))
? ? {printf("%d年是閏年\n",year);}
? ? else printf("%d年不是閏年!\n,year");
? ? return 0;
}
經(jīng)典例子:賦值運(yùn)算符的嵌套火诸,一般題目會(huì)問某個(gè)變量在某時(shí)刻的值
#includeint main()
{
? ? int a,b,c;
? ? //普通賦值:
? ? a = 2,b= 6,c = 26;
? ? a *= b = c = 3;? ? //a = 6,b=3,c=3;
? ? printf("a = %d,b = %d,c = %d\n",a,b,c);
? ? a += b +=c;? ? //a = 12,b=6,c =3
? ? printf("a = %d,b = %d,c = %d\n",a,b,c);
? ? a = b == c + 5;? //a = 0,b = 6,c = 3
? ? printf("a = %d,b = %d,c = %d\n",a,b,c);
? ? return 0;
}
經(jīng)典例子:用條件表達(dá)式實(shí)現(xiàn)求三個(gè)數(shù)的最大值
#includeint main()
{
? ? int a,b,c;
? ? int max;
? ? printf("請輸入三個(gè)數(shù):\n");
? ? scanf("%d%d%d",&a,&b,&c);
? ? a > b ? (max = a):(max = b);
? ? max < c? (max = c):max;
? ? printf("輸出最大值:%d\n",max);
? ? return 0;
}
經(jīng)典例子:逗號(hào)表達(dá)式的值
#includeint main()
{
? ? //int a = b = c = 5;是不合法的啊涵叮!
? ? int a,b,c;
? ? a = b = c = 1;
? ? c = (a = 10,b = 10,2 * a + 5,a + a * b + c);
? ? //輸出結(jié)果:10,10,111;
? ? printf("a = %d,b = %d,c = %d\n",a,b,c);
? ? return 0;
}
sizeof:通常用來測試某個(gè)數(shù)據(jù)類型所占的內(nèi)存空間大小
經(jīng)典例子:測試的是int,float,char類型在本機(jī)所占的字節(jié)數(shù)
#include
int main()? ?
{? ?
? ? int a = 1;? ?
? ? float b = 1.1;? ?
? ? char c = 'c';? ?
? ? printf("%d,%d,%d\n",sizeof(a),sizeof(b),sizeof(c));? ?
? ? return 0;? ?
}?
口訣:括號(hào)最大 > 惭蹂! > 算數(shù)運(yùn)算符 > 關(guān)系運(yùn)算符 > 邏輯與或 > ?賦值運(yùn)算符
另外伞插,記得口訣就好割粮,不要去記表,用到的時(shí)候再查媚污,查多久熟了舀瓢。