我們用一個(gè)簡單的C程序例子來介紹C語言的基本構(gòu)成、格式和良好的寫作風(fēng)格,以加深朋友對C語言的理解。
例1:計(jì)算兩個(gè)整數(shù)之和的c程序:
#包括
main()
{?
int a,b,sum/*將變量a、b和sum定義為整數(shù)變量*/
a = 20/*將整數(shù)20賦給整數(shù)變量a*/
b = 15/*將整數(shù)15賦給整數(shù)變量b*/
sum = a+b;/*將兩個(gè)數(shù)之和賦給整數(shù)變量sum*/
printf("a=%d,b=%d,sum=%dn ",a,b,sum);
/*將計(jì)算結(jié)果輸出到顯示屏*/
}亮點(diǎn):
1.任何C語言程序必須包括以下格式:
main()
{ }?
這是C語言的基本結(jié)構(gòu),任何程序都必須包含這種結(jié)構(gòu)。括號里什么都不能寫,那么程序就不會執(zhí)行任何結(jié)果。
2.main()-在C語言中稱為“主函數(shù)”。一個(gè)C程序只有一個(gè)主要功能。任何C程序總是從主函數(shù)開始,主函數(shù)后面的一對括號是不能省略的。
3.大括號{}括起來的內(nèi)容稱為主函數(shù)的函數(shù)體,這部分內(nèi)容就是計(jì)算機(jī)要執(zhí)行的內(nèi)容。
4.{}中每個(gè)句子后面都有分號(;),在C語言中,我們把以分號結(jié)尾的句子稱為C語言的語句,分號是語句結(jié)尾的符號。
5、printf("a=%d,b=%d,sum=%dn ",a,b,sum);-通過執(zhí)行C語言系統(tǒng)提供給我們直接使用的屏幕輸出功能,用戶可以看到運(yùn)行結(jié)果。程序運(yùn)行后,顯示屏上將顯示以下結(jié)果:
a=20,b=15,sum=35
6 、#包括
注意:(1)以#開始(2)不要以分號結(jié)束
這一行沒有分號,所以不是語句。它在C語言中被稱為命令行,或“預(yù)編譯處理命令”。
7.程序中以/*開頭,以*/結(jié)尾的部分表示程序的注釋部分。注釋可以添加到程序的任何地方,以提高程序的可讀性。而計(jì)算機(jī)在執(zhí)行主功能時(shí)完全忽略了注釋部分,換句話說,計(jì)算機(jī)并不存在于主功能中作為注釋部分。
常數(shù)
在程序運(yùn)行中,其值不能改變的量稱為常數(shù)。常量有五種類型:整數(shù)常量、實(shí)常量、字符常量、字符串常量和符號常量。
(a)數(shù)字轉(zhuǎn)換
數(shù)字的四種表現(xiàn)形式:
①:二進(jìn)制:所有數(shù)字都由0和1,2組成。當(dāng)二進(jìn)制數(shù)為1時(shí),不會出現(xiàn)在二進(jìn)制數(shù)中。
示例:110101
②:八進(jìn)制:以數(shù)字0開頭(注意不是字母O,O),所有數(shù)字由0~7組成。每八進(jìn)制一個(gè),八進(jìn)制數(shù)中不會出現(xiàn)8。
例如:0112,0123,077等
③:十進(jìn)制:所有數(shù)字由0~9組成,十進(jìn)制數(shù)字中不會出現(xiàn)每一個(gè)十進(jìn)制數(shù)字。
例如:0,12,-15等
④:十六進(jìn)制:從0x或0X(數(shù)字0加字母X)開始,所有數(shù)字由0~9,A~F(或a~f)組成,每一個(gè)都是十六進(jìn)制(其中A,B,C,D,E,F(xiàn)分別代表10,11,12,13,14,15)
示例:0x4A、0X14c7等
數(shù)字在計(jì)算機(jī)中以二進(jìn)制形式表示和存儲。用戶輸入的普通十進(jìn)制數(shù)必須由計(jì)算機(jī)轉(zhuǎn)換成二進(jìn)制數(shù)才能存儲在計(jì)算機(jī)中。同樣,計(jì)算機(jī)的計(jì)算結(jié)果也是二進(jìn)制的,通常會轉(zhuǎn)換成十進(jìn)制數(shù),然后輸出給用戶閱讀。這種轉(zhuǎn)換通常是由計(jì)算機(jī)自動(dòng)實(shí)現(xiàn)的。
(1)將十進(jìn)制轉(zhuǎn)換成二進(jìn)制、八進(jìn)制和十六進(jìn)制
除法:將十進(jìn)制數(shù)除以2,記錄余數(shù),將得到的商除以2,直到商為0,然后將每次得到的余數(shù)按照從后到前的逆序排列,得到的余數(shù)序列就是十進(jìn)制數(shù)對應(yīng)的二進(jìn)制數(shù)。八進(jìn)制和十六進(jìn)制的轉(zhuǎn)換方法同上。
例如:十進(jìn)制數(shù)13被轉(zhuǎn)換成二進(jìn)制數(shù),其值為1101,八進(jìn)制數(shù)為015,十六進(jìn)制數(shù)為d .
(2)將二進(jìn)制、八進(jìn)制和十六進(jìn)制轉(zhuǎn)換成十進(jìn)制
乘積求和:將二進(jìn)制的每一位從低位到高位(右側(cè)的低位和左側(cè)的高位)分別乘以20、21和22。。。。,然后對這些乘積求和。
例如:(1101)2 =(13)10(317)8 =(207)10(23e)16 =(574)10
(3)二進(jìn)制、八進(jìn)制和十六進(jìn)制之間的轉(zhuǎn)換
①:從二進(jìn)制到八進(jìn)制的轉(zhuǎn)換:每三位從右到左轉(zhuǎn)換成十進(jìn)制數(shù),得到的數(shù)據(jù)組合就是對應(yīng)的八進(jìn)制數(shù)(注意:高位少于三位填零)。
示例:(010 110 111)2=(267)8
②:二進(jìn)制到十六進(jìn)制:每四位從右到左轉(zhuǎn)換成十進(jìn)制數(shù),得到的數(shù)據(jù)組合就是對應(yīng)的十六進(jìn)制數(shù)(注意:高位少于四位填零)。
示例:(0101 1011)2=(5B)16
③:八進(jìn)制到二進(jìn)制:每個(gè)數(shù)字轉(zhuǎn)換成三個(gè)二進(jìn)制數(shù)字
示例:(13)8=(001 011)2=(1011)2
(注意:去掉前兩個(gè)00,因?yàn)?在高位沒有意義)
④:十六進(jìn)制到二進(jìn)制:每個(gè)數(shù)字轉(zhuǎn)換成四個(gè)數(shù)字
示例:(E3)16=(1110 0011)2
(2)整數(shù)常數(shù)
整數(shù)常量有三種:十進(jìn)制整數(shù)常量、八進(jìn)制整數(shù)常量和十六進(jìn)制整數(shù)常量。
(注意:C語言中沒有直接表示二進(jìn)制的整數(shù)常量,C語言源程序中也不會出現(xiàn)二進(jìn)制。)
行文如下:
十進(jìn)制整數(shù)常量:123,0,-24,85L(長整數(shù)常量)等
八進(jìn)制整數(shù)常量:051,-026,0773等。
十六進(jìn)制整數(shù)常量:0x55,0x1101,0x,0x5c 0,-0xFF。
其中l(wèi)是長整數(shù)。
(3)實(shí)常數(shù)
實(shí)常數(shù)有兩種表示形式:十進(jìn)制形式和指數(shù)形式。
十進(jìn)制形式:5.4 0.074 -23.0
指數(shù)形式:5.4e0 4.3e-3 -3.3e4 (1)小數(shù)部分為0的實(shí)常數(shù),可以寫成453.0或453。
(2)用小數(shù)位表示時(shí),小數(shù)位兩邊必須有數(shù)字,而不是“. 453”和“453”,它們應(yīng)該寫成“0.453”和“453.0”。
(3)用index寫時(shí),E前必須有一個(gè)數(shù)字,E后的index必須是整數(shù)(注意:整數(shù)順序碼可以是正數(shù)、負(fù)數(shù)、八進(jìn)制數(shù)或十六進(jìn)制數(shù),但必須是整數(shù))。
(4)字符常數(shù)
字符常量的符號是一對單引號“”。C語言中有兩種類型的字符常量:
(1)用一對單引號括起來的字符,如“a”、“r”和“#”。注意:“A”和“A”是兩個(gè)不同的字符常量。
(2)用一對單引號括起來,以反斜杠,后跟若干數(shù)字或字母,如' n ',其中" "表示轉(zhuǎn)義,后跟不同字符表示不同含義,這樣的字符常量稱為轉(zhuǎn)義字符。具體如圖。
轉(zhuǎn)義字符ASCII碼的轉(zhuǎn)義字符含義 n返回第10行
t跳轉(zhuǎn)到下一個(gè)列表位置9
bBackspace 8
r輸入13
f12 n n n n n n
反斜杠字符“”92
'單引號字符39
"雙引號34
a戒指7
由1 ~ 3個(gè)八位字節(jié)表示的DDD字符
xhh用十六進(jìn)制數(shù)表示的1 ~ 2個(gè)字符
(5)字符串常量
在C語言中,由幾個(gè)用雙引號括起來的字符組成的序列是一個(gè)字符串常量。
例:“倪好”“快樂”等等。
(6)符號常數(shù)
符號常量是由宏定義“#”定義的常量,在C程序中可以用標(biāo)識符表示。
例子:計(jì)算圓面積的c程序。
#包括
#定義PI 3.14159
main()
{?
float r,s;
r = 12.5
S = PI * r * r
printf("s= %f ",s);
}?
描述:
#define是一個(gè)宏定義。本程序中出現(xiàn)PI的地方都代表3.14159,PI稱為符號常數(shù)。傳統(tǒng)上我們用大寫字母表示符號常量,小寫字母表示變量,這樣更容易區(qū)分。
變量
變量是其值可以改變的量。變量必須有一個(gè)變量名,并在內(nèi)存中占據(jù)一定的存儲單元,變量的值就存儲在這個(gè)存儲單元中。不同類型的變量有不同的存儲單元大小,使用前必須定義變量。
(a)整數(shù)變量
整數(shù)變量有四種類型:基本類型(int)、短類型(short int或short)、長類型(long int或long)和無符號類型(無符號int、無符號short、無符號long)。
不同的編譯系統(tǒng)對以上四個(gè)整數(shù)數(shù)據(jù)所占的位數(shù)和數(shù)值范圍有不同的規(guī)定。
類型說明符
(二)真實(shí)變量
在C語言中,實(shí)變量分為單精度類型(浮點(diǎn))和雙精度類型(雙精度)。例如:
浮動(dòng)a,b;
雙m;
在vc中,浮點(diǎn)數(shù)據(jù)在內(nèi)存中占4字節(jié)(32位),雙數(shù)據(jù)占8字節(jié)。單精度實(shí)數(shù)提供7個(gè)有效數(shù)字,雙精度實(shí)數(shù)提供15 ~ 16個(gè)有效數(shù)字。實(shí)型常量中沒有浮點(diǎn)型和雙精度型的區(qū)別。實(shí)型常量可以賦給浮點(diǎn)型或雙精度型變量,但變量根據(jù)其類型截取實(shí)型常量中相應(yīng)的有效數(shù)字。
注意:實(shí)變量只能存儲實(shí)值,既不能存儲整數(shù)變量,也不能存儲整數(shù)值。
(三)性格變量
字符變量用于存儲字符常量,并定義形式:
Char變量名;
其中關(guān)鍵字char定義字符數(shù)據(jù)類型,占用一個(gè)字節(jié)的存儲單元。
例:char cr1,cr2
cr1= 'A ',cr2 = ' B
當(dāng)一個(gè)字符被分配給一個(gè)字符變量時(shí),對應(yīng)于該字符的ASCII碼被存儲在存儲單元中,而不是該字符本身。比如字符‘A’的ASCII碼是65,內(nèi)存中的存儲形式如下:01000001
由于字符存儲在內(nèi)存中的ASCII碼中,其存儲形式類似于整數(shù),所以字符數(shù)據(jù)和整數(shù)數(shù)據(jù)在C語言中可以通用。一個(gè)字符可以以字符或整數(shù)的形式輸出,字符數(shù)據(jù)也可以進(jìn)行算術(shù)運(yùn)算,相當(dāng)于它們的ASCII碼。
賦值運(yùn)算符和賦值表達(dá)式
1.賦值運(yùn)算符和賦值表達(dá)式
賦值符號“=”是一個(gè)賦值運(yùn)算符,用于將一個(gè)數(shù)據(jù)賦給一個(gè)變量或?qū)⒁粋€(gè)變量的值賦給另一個(gè)變量。由賦值運(yùn)算符組成的表達(dá)式稱為賦值表達(dá)式。一般形式是:
變量名=表達(dá)式
在程序中,一個(gè)變量可以被賦值多次。每次賦值時(shí),其對應(yīng)存儲單元中的數(shù)據(jù)都會更新一次,內(nèi)存中的當(dāng)前數(shù)據(jù)就是上次賦值的數(shù)據(jù)。
例:a = 12該表達(dá)式為“將值10賦給變量a”。
描述:
A.如果賦值號兩邊的操作數(shù)類型不一致,系統(tǒng)會自動(dòng)進(jìn)行類型轉(zhuǎn)換。轉(zhuǎn)換規(guī)則:將賦值號右側(cè)表達(dá)式的值類型轉(zhuǎn)換為賦值號左側(cè)變量的類型。
例:int y = 3.5最終存儲在變量y中的是整數(shù)3。
b、復(fù)制的表達(dá)式的值可以再次賦值給一個(gè)變量,形成連續(xù)賦值。
例如,x=y=25是一個(gè)連續(xù)賦值表達(dá)式,x=y=25相當(dāng)于x=(y=25),所以表達(dá)式x=y=25的最終值是25。
第二,復(fù)合賦值運(yùn)算符
在賦值運(yùn)算符之前添加其他運(yùn)算符可以形成復(fù)合賦值運(yùn)算符。與算術(shù)運(yùn)算相關(guān)的復(fù)合運(yùn)算符有:+=,-=,* =,/=,% =。
兩個(gè)符號之間可以沒有空的情況,復(fù)合賦值運(yùn)算符的優(yōu)先級與賦值運(yùn)算符相同。表達(dá)式n+=1相當(dāng)于n=n+1。作用是將變量n中的值增加1后賦給變量n,其他復(fù)合賦值運(yùn)算符的運(yùn)算規(guī)則依次類推。
如果要表示a+的值=a-=a*a,其中a的初始值為12。
步驟:
(1)先進(jìn)行“a-=a*a”運(yùn)算,相當(dāng)于a=a-a*a=12-144=-132。
(2)“a+=-132”運(yùn)算再次執(zhí)行,相當(dāng)于a = a+(-132) =-132-132 =-264。逗號運(yùn)算符和逗號表達(dá)式
在C語言中,除了分隔符-逗號運(yùn)算符外,逗號還可以用作運(yùn)算符,幾個(gè)表達(dá)式由逗號運(yùn)算符連接。比如a=b+c,a=b*c等等就叫做逗號表達(dá)式。
一般形式是:
表達(dá)式1,表達(dá)式2,表達(dá)式3,...,表達(dá)式n
示例:x=2,y=3,z=4
逗號表達(dá)式從左到右組合,即先求解表達(dá)式1,再依次求解表達(dá)式2,直到表達(dá)式n的值,表達(dá)式n的值就是整個(gè)逗號表達(dá)式的值。上述逗號表達(dá)式的值是表達(dá)式z=4的值。需要注意的是,逗號運(yùn)算符是所有運(yùn)算符中最低的。
示例:有以下步驟:
main()
{?
int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d ",y,x);
}?
程序顯示y=6,x=6
Y=(x=a+b),(b+c);程序結(jié)果是否改為y=((x=a+b),b+c)?
關(guān)系運(yùn)算符和關(guān)系表達(dá)式
1.c語言中的邏輯值
C語言中只有兩個(gè)邏輯值:true和flase。真用非零,假用零。因此,對于任何表達(dá)式,如果其值為零,則表示為假值,如果其值非零,則表示為真值。只要值不為零,無論是正數(shù)、負(fù)數(shù)、整數(shù)還是實(shí)數(shù),都代表真值。例如,邏輯值-5為真。
第二,邏輯表達(dá)
" & amp& amp”和“| |”有兩個(gè)操作數(shù),所以是雙目運(yùn)算符,和!只有一個(gè)操作數(shù),所以是單目算子。邏輯運(yùn)算的例子如下:
(1)a & amp;& ampb:什么時(shí)候& amp當(dāng)雙方都為真時(shí),表達(dá)式a &:& amp;b的值為真。
值得注意的是,在數(shù)學(xué)中,關(guān)系0
(2)a||b:當(dāng)| |的任意一邊為真時(shí),表達(dá)式a||b的值為真。
(3)!a:表示取逆,如果a為真,那么!a為假,反之亦然。比如!-5的值為0。
在c語言中,由& amp或者| |,在某些特定情況下,會發(fā)生“短路”。
①x & amp;& ampy &。& ampz,只有當(dāng)x為真(非0)時(shí),才需要判斷y的值;只有當(dāng)x和y都為真時(shí),才需要判斷z的值;只要x為假,就不需要區(qū)分y和z,整個(gè)表達(dá)式的值為0。食譜:“一假必有假”。
示例:(!5 = = 1)amp;& amp(+++I = = 0)(!5==1)表達(dá)式的值為0,所以在計(jì)算機(jī)運(yùn)行時(shí)會跳過此表達(dá)式(++i==0),(!5 = = 1)amp;& amp(+++I = = 0)表達(dá)式的值為0。
(2)x||y||z,只要x的值為真(非零),就不用判斷y和z的值,整個(gè)表達(dá)式有一個(gè)值為1,只需要判斷x的值為假,x和y的值同時(shí)為假,z才需要判斷y的值。
位操作
一位運(yùn)算符
在計(jì)算機(jī)中,數(shù)據(jù)是以二進(jìn)制數(shù)的形式存儲的,位運(yùn)算指的是存儲單元中二進(jìn)制位的運(yùn)算。c語言提供了六種位運(yùn)算符。
第二,位操作
位運(yùn)算符&:| ~ & lt;& lt>。>。∧優(yōu)先級從高到低的順序是:
在按位運(yùn)算符中,求反運(yùn)算“~”的優(yōu)先級最高,而左移位和右移位是&,排名第二,其次是按位and“&:”,按位異或“↑”和按位or“|”。順序是~
例1:左移操作符”
例如:
a<。& lt四
意味著將a的每個(gè)二進(jìn)制數(shù)左移4位。例如,a = 0000011(十進(jìn)制3),左移4位后為00110000(十進(jìn)制48)。
例2:右移位運(yùn)算符“>:>”是雙目符。它的功能是放" >:>;左操作數(shù)的所有二進(jìn)制文件都向右移動(dòng)幾個(gè)位,“>:>”右邊的數(shù)字指定移動(dòng)的位數(shù)。
例如:
設(shè)a=15,
a>。>。2?
表示將000001111向右移動(dòng)為00000011(十進(jìn)制3)。
應(yīng)該注意的是,對于有符號的數(shù)字,當(dāng)向右移動(dòng)時(shí),符號位將隨之移動(dòng)。當(dāng)它是正數(shù)時(shí),最高位由0補(bǔ)足,而當(dāng)它是負(fù)數(shù)時(shí),符號位為1。最高位是0補(bǔ)還是1補(bǔ),取決于編譯系統(tǒng)。
例3:設(shè)二進(jìn)制數(shù)a為00101101。如果a的高4位被異或運(yùn)算a∧b求反,則二進(jìn)制數(shù)b為。
分析:異或運(yùn)算常用于翻轉(zhuǎn)特定位,只要要翻轉(zhuǎn)的位與1異或,因?yàn)樵瓟?shù)中值為1的位與1異或得到0,原數(shù)中值為0的位與1異或得到1。而0的異或位將保持其原始值。異或運(yùn)算也可以用來交換兩個(gè)沒有臨時(shí)變量的值。
如果int a = 3,b = 4;,想要交換a和b的值,可以使用以下語句:
a = a∧b;
b = b∧a;
a = a∧b;
所以這個(gè)問題的答案是:11110000。
c語言是非常適合編程入門的語言,所以打好基礎(chǔ)的重要性不言而喻。因此,老九君特此贈送此干貨,希望他的朋友能從中受益。
1.《c語言用戶標(biāo)識符 C語言編程基礎(chǔ)知識匯總學(xué)習(xí),適合初學(xué)者!》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《c語言用戶標(biāo)識符 C語言編程基礎(chǔ)知識匯總學(xué)習(xí),適合初學(xué)者!》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實(shí),對其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請保留本站內(nèi)容來源地址,http://f99ss.com/keji/1605873.html