在上一節(jié)中褐墅,對于C語言有了一個初步的了解拆檬,學(xué)會了如何使用IDE來進行
代碼編寫,編譯和運行妥凳。而這一節(jié)竟贯,我們會對C語言的基本語法進行學(xué)習(xí),
C語言是一門編程語言逝钥,可以和英語進行類比屑那,英語句子 = 單詞 + 語法,
同樣C語言的代碼語句艘款,也有著自己的一套規(guī)則持际。
本節(jié)學(xué)習(xí)路線圖
1.基本字符集
1.1 標識符
何為標識符?
在C語言中,符號常量,變量,數(shù)組,函數(shù)等都需要一定的名稱,我們把這種名稱成為標識符
標識符劃分哗咆?
關(guān)鍵字,預(yù)定義標識符和用戶標識符蜘欲!
標識符的命名規(guī)則?
只能夠由字母晌柬,數(shù)字姥份,下劃線呜叫,或者美元符號($)組成,且不能以數(shù)字開頭;
C語言區(qū)分大小寫,通常變量名和函數(shù)名都用小寫字母表示;
雖然沒有規(guī)定名稱的長度殿衰,但還是別寫太長朱庆,最好是見名知義,比如int max一看就知道
是用來存放最大值的!還有闷祥,不能和下面的32個C語言的關(guān)鍵字重名哦娱颊!以及C語言
中系統(tǒng)先定義的標識符,如系統(tǒng)類庫凯砍,系統(tǒng)常量名系統(tǒng)函數(shù)名箱硕,
小編推薦一個學(xué)C/C++的學(xué)習(xí)裙【六二七,零一二悟衩,四六四】,無論你是大牛還是小白剧罩,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)!裙內(nèi)有很多干貨和技術(shù)分享
如(格式輸出函數(shù):printf())座泳;重名惠昔!
1.2 關(guān)鍵字「保留字」
何為關(guān)鍵字?
C語言中具有特殊含義的英文單詞,通常用于構(gòu)成語句,存儲數(shù)據(jù),定義數(shù)據(jù)類型等
C語言里的32個關(guān)鍵字參照圖挑势,不用記镇防,用到的時候再去了解!
1.3 分隔符
空白符:在程序中加入適當?shù)目瞻卓s進代碼潮饱,會使得程序更加清晰易讀来氧。
普通分隔符
分號「;」:語句結(jié)尾
大括號「{ }」:函數(shù)體,復(fù)合語句以及數(shù)組的初始化等香拉;
圓括號「()」:函數(shù)定義時用來括住參數(shù)啦扬,或者用來修改運算順序,
比如:(a + 1)2 和 a + (1 2)
方括號「[]」定義數(shù)組類型和應(yīng)用元素凫碌,比如: int a10; b = a3;
點號「.」:結(jié)構(gòu)體仲引用成員
逗號「,:參數(shù)分隔扑毡,比如:int a,b,c;
注釋符:// 單行注釋, /**/多行注釋
2.數(shù)據(jù)類型
2.1 基本數(shù)據(jù)類型
注意:這里沒有給出數(shù)據(jù)類型的取值范圍與精度域?qū)挼龋詾樵诓煌挠嬎銠C
字長與系統(tǒng)環(huán)境下占用的內(nèi)存空間是不一樣的,可以通過sizeof獲得對應(yīng)數(shù)據(jù)類
型在該系統(tǒng)環(huán)境下所占的字節(jié)证鸥,從而算出對應(yīng)數(shù)據(jù)類型的取值范圍僚楞!
整型:用于準確地表示整數(shù),根據(jù)表示范圍的不同分為以下三種:
短整型(short)
實型(浮點型):用于標識實數(shù)(小數(shù))根據(jù)范圍和精度不同分為以下兩種:
單精度浮點數(shù)(float)
注意:float只能夠保證7位數(shù)字是有效的!!!
字符型: 用來描述單個字符,char
除了上面三種以外,還可以使用longshortsignedunsigned來修飾不同的數(shù)據(jù)類型:
(char只能用后面兩個),有符號與無符號的區(qū)別是:最高位是否為符號位,
即最高位是否用于表示數(shù)的整負;我們可以添加unsigned來保證此數(shù)據(jù)為正數(shù),
同時對應(yīng)的數(shù)據(jù)范圍由0到原來的最大值 * 2
2.2 其他數(shù)據(jù)類型
數(shù)組,指針,結(jié)構(gòu)體,共用體,枚舉枉层,指針類型,文件類型,空類型(void)泉褐,后面會學(xué),這里不講鸟蜡。
3.常量與變量
3.1 常量
整型常量
除上述三種外膜赃,還可以在常量后面添加后綴:L或者U,比如:
108L表示長整型的常量揉忘,與108雖然數(shù)值相等跳座,但分配的內(nèi)存空間大小是不一樣的端铛;
0xA3U:表示無符號位的十六進制數(shù)0xA3
實型常量
Tips:所謂的規(guī)范化的指數(shù)形式就是:小數(shù)點左邊有一位非零的數(shù)字(只有一位)
比如:2.4E3 是對的,而0.1E5 則是錯的疲眷。
字符常量
附上C里的轉(zhuǎn)義字符:
轉(zhuǎn)義字符作用轉(zhuǎn)義字符作用轉(zhuǎn)義字符作用轉(zhuǎn)義字符作用
\n回車換行\(zhòng)t水平制表\v垂直制表\b退格
\r回車不換行\(zhòng)f走紙換頁\0控制符\\右斜線
\'單引號\"雙引號\a響鈴
字符串常量
用一對雙引號括起來的或者多個字符構(gòu)成的字符串序列禾蚕,如:
“”,”apple”,”+-*/@#$%”
系統(tǒng)會在存儲字符串的時候自動加上:‘\0’,字符串結(jié)束的標志
如:”a”這個字符串占兩個字節(jié)狂丝,因為存儲的時候其實是:”a\0”
符號常量
又叫宏常量换淆,是一個預(yù)處理命令:#define 常量名 常量值
定義后,程序所有出現(xiàn)這個標識的地方都可以用這個常量來代替:
如: #define PI 3.1415926 s = r * r * PI几颜,這里的PI就是3.1415926
3.2 變量
什么是變量?
答:程序運行過程中,他的值可以改變的數(shù)據(jù),代表著一個存儲空間,需要用變量名
來找到這個數(shù)據(jù)就像:你去超市,放東西到儲物柜的一格,他會給你一張紙條,你根據(jù)
這個紙條才可以拿回自己的東西儲物柜的一格就是變量的內(nèi)存空間,字條就是變量名,
你拿和放就是修改變量名對應(yīng)內(nèi)存中的數(shù)據(jù)倍试。
變量的使用:
一個簡單的 int a = 123;其實暗地里執(zhí)行了以下操作
int a:在內(nèi)存中開辟了四個字節(jié)的內(nèi)存空間,并且為這個空間起了個名字,叫做a;
后面的=123,這一步完成的是變量的初始化,就是通過a這個變量名,往4個字節(jié)的
內(nèi)存中放入123這個數(shù)據(jù)
Tips:
一個好的建議是,當我們定義一個變量時,對其進行初始化,可以有效的
避免空指針問題的出現(xiàn);
你可以通過&a獲得存放123這個數(shù)據(jù)的內(nèi)存地址的值蛋哭!
4.運算符與表達式
4.1 算術(shù)運算符
經(jīng)典例子:倒序輸出五位數(shù)
#include
int main() {
int a,i;
printf("請輸入需要倒序輸出的五位數(shù)\n");
scanf("%d",&a);
printf("輸出倒序后的五位數(shù):\n");
for(i = 0;i
{
printf("%d",a%10);
a /= 10;
}
printf("\n");
return 0;
}
4.2 關(guān)系運算符
經(jīng)典例子:
#include
int 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;
}
4.3 邏輯運算符
經(jīng)典例子:判斷某一年是否為閏年
#include
int 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;
}
4.4 賦值運算符
經(jīng)典例子:賦值運算符的嵌套县习,一般題目會問某個變量在某時刻的值
#include
int 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; }
4.5 條件表達式
經(jīng)典例子:用條件表達式實現(xiàn)求三個數(shù)的最大值
#include int main()
{
int a,b,c;
int max;
printf("請輸入三個數(shù):\n");
scanf("%d%d%d",&a,&b,&c);
a > b ? (max = a):(max = b);
max
printf("輸出最大值:%d\n",max);
return 0;
}
4.6 逗號表達式
經(jīng)典例子:逗號表達式的值
#include
int 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;
}
4.7 長度測試運算符
sizeof:通常用來測試某個數(shù)據(jù)類型所占的內(nèi)存空間大小
經(jīng)典例子:測試的是int,float,char類型在本機所占的字節(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;
}
4.8 運算符的優(yōu)先級
口訣:括號最大 > 躁愿! > 算數(shù)運算符 > 關(guān)系運算符 > 邏輯與或 > ?賦值運算符
附上C語言運算符優(yōu)先級表(詳細):
C語言運算符的優(yōu)先級
另外,記得口訣就好棺妓,不要去記表攘已,用到的時候再查炮赦,查多久熟了怜跑。
5.數(shù)據(jù)類型的轉(zhuǎn)換