第2章C語言的基本知識_第1頁
第2章C語言的基本知識_第2頁
第2章C語言的基本知識_第3頁
第2章C語言的基本知識_第4頁
第2章C語言的基本知識_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第2章C語言的基本知識2.1標識符和關(guān)鍵字2.2數(shù)據(jù)類型2.3常量與變量2.4運算符和表達式2.5不同數(shù)據(jù)類型數(shù)據(jù)間的混合運算學習目標對照了解自然語言和C語言的組成要素掌握C語言中的字符集掌握C語言中標識的概念及用戶定義標識的規(guī)則2.1標識符和關(guān)鍵字熟記C語言中的關(guān)鍵字自然語言與C語言組成要素對比自然語言字詞句段章單詞短語C語言字符標識符表達式語句函數(shù)程序按照“字-詞-句-段-章”的自然語言的學習順序?qū)W習C語言是一種非常有效的學習方法。

2.1標識符和關(guān)鍵字字符集2.1標識符和關(guān)鍵字字符是組成語言的最基本的元素,國際上使用最廣泛的計算機字符編碼是ASCII碼,標準的ASCII碼字符集包括128個字符。

字符說明字母字符包括大寫字母A~Z以及小寫字母a~z共52個字符數(shù)字字符包括0~9共10個字符空格符空格符只在字符常量和字符串常量中起作用特殊字符特殊字符是不可顯示、不可打印的字符,用于計算機設(shè)備的操作控制以及在數(shù)據(jù)通信時進行傳輸控制其他字符其它字符包括圖形符、標點符和運算符等2.1標識符和關(guān)鍵字標識符所謂標識符就是用來標識在C語言程序中出現(xiàn)的符號常量、變量、數(shù)據(jù)類型、函數(shù)和語句的字符序列,C語言中的標識符是由字符組成,滿足一定的構(gòu)成規(guī)則。

C語言規(guī)定,標識符由字母、數(shù)字、下劃線組成,且第一個字符不能使用數(shù)字字符。例如,a、_3x、BOOK1、sum5、student_1都是合法的標識符,而-3x、bowy-1、3Student、$Map、Sum@Mul、a>b等是不合法的,不能用作C語言的標識符。

autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile2.1標識符和關(guān)鍵字關(guān)鍵字關(guān)鍵字是系統(tǒng)定義的、具有特定含義、專門用作特定用途的C語言標識符,也稱為保留字。標準C語言中共有32個關(guān)鍵字。

2.2數(shù)據(jù)類型學習目標了解C語言的數(shù)據(jù)類型掌握C語言中的基本數(shù)據(jù)類型2.2數(shù)據(jù)類型C語言的數(shù)據(jù)類型數(shù)據(jù)類型基本類型空類型指針類型構(gòu)造類型整型字符型實型枚舉型數(shù)組結(jié)構(gòu)體共用體基本數(shù)據(jù)類型2.2數(shù)據(jù)類型類型名稱中文名稱字節(jié)數(shù)(Byte)位數(shù)(bit)數(shù)值范圍備注char字符型18?128~127?27~(27?1)int整型216?32768~32767?215~(215?1)float單精度實型432?3.4×10?38~3.4×10386~7位有效數(shù)字double雙精度實型864?1.7×10-308~1.7×1030815~16位有效數(shù)字

ANSIC標準規(guī)定,簡單類型的前面還可以加上修飾符,使簡單類型的語義更加豐富,方便C編程人員選用恰當?shù)臄?shù)據(jù)類型。這樣的修飾符共有4種:

(1)signed:有符號; (2)unsigned:無符號; (3)long:長型; (4)short:短型。2.3常量與變量學習目標理解常量與變量的概念熟練掌握整型、實型及字符型常量與變量的定義和使用2.3.1常量與變量的概念常量

在程序運行過程中其值保持不變的量稱為常量。常量可以分為符號常量和直接常量兩種。

直接常量是直接以自身的存在形式體現(xiàn)值和類型的,例如,123,-5是整型常量,1.5,1.2E-2是實型常量,’x’是字符常量,”first”是字符串常量。

符號常量是采用宏定義命令定義的常量?;x形式如下:

#define符號常量名常量 例如:#definePI3.14159定義PI為一個符號常量,C編譯系統(tǒng)在處理程序時會將程序中全部的PI均用3.14159代替。2.3.1常量與變量的概念變量

在程序運行過程中其值可以被改變的量稱為變量。變量在內(nèi)存中根據(jù)其數(shù)據(jù)類型占據(jù)一定的存儲單元,用來存入可能變化的值。變量的定義C語言中的變量遵循“先定義,后使用”的原則,就是必須先對將要使用的變量進行變量定義,說明變量的數(shù)據(jù)類型,然后才能使用該變量。變量定義的一般形式為:

類型說明符變量名標識符,變量名標識符,…;例如:inti,j,k;//定義i,j,k為整型變量2.3.1常量與變量的概念變量的初始化

C語言中允許在變量定義的同時對變量賦初始值,也稱為變量的初始化。例如:

inta=2;

charc=’x’;floatx=1.2,y=2.4;2.3.1常量與變量的概念變量的基本操作一個變量可以看成是一個存儲數(shù)據(jù)的容器。有兩個對變量的基本操作:

一是向變量中存入數(shù)據(jù),這個操作被稱為“賦值”;二是取得變量當前的值,以便在程序運行時使用,這個操作被稱為“取值”。2.3.2整型常量與變量整型數(shù)據(jù)在內(nèi)存中是以二進制方式存放的,最高位為符號位,并以補碼表示。將一個十進制整數(shù)轉(zhuǎn)化為補碼表示的方法如下:(1)對于正數(shù),其補碼表示與原碼相同。(2)對于負數(shù),其補碼表示為它的反碼加1;負數(shù)的反碼為其絕對值的所有位(含符號位)取反得到。2.3.2整型常量與變量例如:求-10的補碼的方法是:①取-10的絕對值10;②10的絕對值的二進制形式為:0000000000001010(一個整數(shù)占16位);③對0000000000001010取反得到:1111111111110101;④再加1得1111111111110110。2.3.2整型常量與變量(1)十進制整型常量其形式是:d其中,d可以是從0~9的一個或多個十進制數(shù)位,第一位不能是0。進位規(guī)則為:逢十進一。(2)八進制整型常量其形式是:0d其中,d可以是一個或多個八進制數(shù)(0~7之間),起始0是必須的引導符。進位規(guī)則為:逢八進一。(3)十六進制整型常量其形式是:0xd其中,d可以是一個或多個十六進制數(shù)(從0~9的數(shù)字,或是從’a’到’f’的字母)。引導符0是必須的,字母X可以用大寫或小寫,進位規(guī)則為:逢十六進一。整型常量在C語言中整型常量可以表示為十進制、八進制和十六進制三種形式。

2.3.2整型常量與變量整型變量整型變量可以分為以下幾類:(1)基本整型類型說明符為int,在內(nèi)存中占2個字節(jié),其取值范圍為-32768~32767。(2)短整型類型說明符為shortint或short,在內(nèi)存中所占字節(jié)數(shù)和取值范圍均與基本整型相同。(3)長整型類型說明符為longint或long,在內(nèi)存中占4個字節(jié),其取值范圍為-2147483648~2147483647。(4)無符號型類型說明符為unsigned,此類型的整數(shù)沒有負數(shù)。2.3.2整型常量與變量實例分析//FileName:chap2_1.c#include<stdio.h>intmain(){ inta,b,c,d;//定義a、b、c、d為基本整型變量

unsignedu;//定義u為無符號基本整型變量

a=10;b=-20;u=5; c=a+u; d=b-u;

printf("c=%d,d=%d\n",c,d);

return0;}程序運行結(jié)果如下:c=15,d=-252.3.3實型常量與變量實型數(shù)據(jù)又稱為浮點型數(shù)據(jù),是帶小數(shù)部分的數(shù)據(jù)。根據(jù)能夠表示的大小和精度,浮點型數(shù)據(jù)分為單精度、雙精度兩類,類型說明符分別為float和double。浮點型數(shù)據(jù)在內(nèi)存中以指數(shù)形式存儲。C語言將一個浮點型數(shù)據(jù)分成小數(shù)和指數(shù)兩個部分存儲。例如,實數(shù)3.14159在內(nèi)存中的存放形式如圖所示。2.3.3實型常量與變量(1)十進制小數(shù)形式由正負號、數(shù)碼0~9和一個小點組成,小數(shù)點前面和后面可以沒有數(shù)字。例如.123//表示實數(shù)0.123-.123//表示實數(shù)-0.123123.//表示實數(shù)123.0(2)指數(shù)形式由十進制小數(shù)或整數(shù)與字母e或E組成。一般形式如下:

aEn或aen其中,a可以是十進制小數(shù)或整數(shù),n必須為十進制整數(shù),整體表示數(shù)a×10n。對于指數(shù)形式表示的實型常量,要求字母e或E前面必須有數(shù)字,后面必須為整數(shù)。實型常量在C語言中,實型常量有兩種表示形式:十進制小數(shù)形式和指數(shù)形式。2.3.3實型常量與變量實型變量實型變量可以分為以下3類:(1)單精度型類型說明符為float,在內(nèi)存中占4個字節(jié),其取值范圍的絕對值為10-38~1038,提供6~7位有效數(shù)字。(2)雙精度型類型說明符為double,在內(nèi)存中占8個字節(jié),其取值范圍的絕對值為10-308~10308,提供15~16位有效數(shù)字。(3)長雙精度型類型說明符為longdouble,在內(nèi)存中占10個字節(jié),其取值范圍的絕對值為10-4932~104932,提供18~19位有效數(shù)字。2.3.3實型常量與變量實例分析//FileName:chap2_2.c#include<stdio.h>intmain(){ floata,b;//定義a、b為單精度浮點型變量

doubled;//定義d為雙精度浮點型變量

a=3.56;b=12345.678; d=12345.6789;

printf("%f,%f,%f\n",a,b,d);

return0;}程序運行結(jié)果如下:3.560000,12345.677734,12345.678900

2.3.4字符型常量與變量在C語言中字符型數(shù)據(jù)包括字符和字符串兩種。字符型數(shù)據(jù)在內(nèi)存中存儲的是字符的ASCII碼值的二進制形式,一個字符的存儲占用一個字節(jié)。2.3.4字符型常量與變量(1)普通字符常。是用單引號括起來的一個字符。該字符可以是數(shù)字、字母等ASCII字符集中除“’”和“\”以外的所有可顯示字符。(2)轉(zhuǎn)義字符。轉(zhuǎn)義字符是一種特殊的字符常量。轉(zhuǎn)義字符以反斜杠開頭,后跟一個或幾個字符。轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義,故稱“轉(zhuǎn)義”字符。字符常量C語言中,字符常量分為普通字符常量和轉(zhuǎn)義字符兩種。2.3.4字符型常量與變量2.3.4字符型常量與變量字符變量每個字符變量被分配一個字節(jié)的內(nèi)存空間。由于字符變量在內(nèi)存中存放的是字符的ASCII碼值,所以也可以把它們看成是整型量。字符型數(shù)據(jù)與整型數(shù)據(jù)之間的轉(zhuǎn)換比較方便。字符數(shù)據(jù)可以參與算術(shù)運算,也可以與整型量相互賦值,還可以按照整數(shù)形式輸出。2.3.4字符型常量與變量實例分析//FileName:chap2_4.c#include<stdio.h>intmain(){ shortintn=97;//字符'a'的ASCII碼為97

printf("%d,%c,%d,%c\n",n,n,n+1,n+1);

return0;}程序運行結(jié)果如下:97,a,98,b

程序說明2.3.4字符型常量與變量字符’a’的ASCII碼為97,變量n以整型數(shù)據(jù)方式輸出時為97,以字符方式輸出時為’a’,如圖所示;n+1的結(jié)果為98,字符’b’的ASCII碼為98,n+1以整數(shù)方式輸出時為98,以字符方式輸出時為’b’。

2.3.4字符型常量與變量字符串常量

C語言中的字符串常量是由一對雙引號括起來的字符序列。字符串常量和字符常量是不相同的量,其區(qū)別如下:(1)從表示形式上看,字符常量是由單引號括起來的,字符串常量是由雙引號括起來的。(2)從字符的個數(shù)上看,字符常量只能是單個字符,字符串常量可以包含0個或多個字符。(3)有字符變量,但沒有字符串變量。C語言沒有專門的字符串類型變量,而是使用字符型數(shù)組或字符型指針來存儲字符串。(4)字符常量在內(nèi)存中占1個字節(jié),字符串常量在內(nèi)存中的字節(jié)數(shù)是字符個數(shù)加1。因為C語言規(guī)定,每一個字符串的末尾加一個字符串結(jié)束標志\0(ASCII碼為0)。2.4運算符和表達式學習目標熟練掌握C語言提供的各種運算符掌握運算符的優(yōu)先級和結(jié)合性能夠應(yīng)用運算符構(gòu)建相應(yīng)的表達式2.4運算符和表達式基本概念運算是對數(shù)據(jù)進行加工的過程,用來表示各種不同運算的符號稱為運算符。參加運算的數(shù)據(jù)稱為運算量或操作數(shù)。用運算符將運算量連接起來的符合C語言語法規(guī)則的式子稱為運算表達式,簡稱表達式。2.4運算符和表達式C語言的運算符2.4運算符和表達式使用C語言的運算符的注意事項1.運算符的功能2.運算符的優(yōu)先級3.運算符的結(jié)合性4.運算結(jié)果及其表示2.4.1算術(shù)運算符及算術(shù)表達式算術(shù)運算符

C語言算術(shù)運算符可以分為基本算術(shù)運算符、自增、自減運算符和正負號運算符三類。

(1)基本算術(shù)運算符基本算術(shù)運算符包括5種:+(加)、-(減)、*(乘)、/(除)、%(取余)。(2)自增和自減運算符C語言中的自增運算符為++,自減運算符為--,都是單目運算符,具有右結(jié)合性。運算符“++”表示操作數(shù)加1,運算符“--”表示操作數(shù)減1。(3)正負號運算符正負號運算符是單目運算符,如-a,-b,-5,+8等。

實例分析//FileName:chap2_6.c#include<stdio.h>intmain(){inti,k; i=5;k=++i;//賦值時,i先增1,再將i的值賦給k

printf("k=%d,i=%d\n",k,i);

i=5;k=--i;//賦值時,i先減1,再將i的值賦給k

printf("k=%d,i=%d\n",k,i);

i=5;k=i++;//賦值時,先將i的值賦給k,再將i增1

printf("k=%d,i=%d\n",k,i);

i=5;k=i--;//賦值時,先將i的值賦給k,再將i減1

printf("k=%d,i=%d\n",k,i); return0;}2.4.1算術(shù)運算符及算術(shù)表達式在使用自增自減運算符時,應(yīng)注意以下幾個問題。①自增和自減運算符的優(yōu)先級高于基本算術(shù)運算符。②自增和自減運算符的操作數(shù)只能是變量,不能是常量和表達式。程序運行結(jié)果如下:k=6,i=6k=4,i=4k=5,i=6k=5,i=42.4.1算術(shù)運算符及算術(shù)表達式算術(shù)表達式用算術(shù)運算符將運算對象連接起來,符合C語法規(guī)則,并能說明運算過程的式子,稱為算術(shù)表達式。

算術(shù)達式的構(gòu)成規(guī)則如下:(1)數(shù)值型常量、數(shù)值型變量、數(shù)值型函數(shù)調(diào)用;(2)+(算術(shù)表達式)、-(算術(shù)表達式);(3)++整型變量、--整型變量、整型變量++、整型變量--;(4)(算術(shù)表達式)雙目算術(shù)運算符(算術(shù)表達式);(5)有限次使用上述規(guī)則獲得運算式也是算術(shù)表達式。

2.4.2關(guān)系運算符及關(guān)系表達式關(guān)系運算符

關(guān)系運算實際上就是比較運算,將給定的兩個運算對象過行比較,判斷比較的結(jié)果是否符合給定的條件,若符合條件為“真”,否則為“假”。

2.4.2關(guān)系運算符及關(guān)系表達式關(guān)系表達式

關(guān)系表達式是由關(guān)系運算符連接表達式構(gòu)成的,具體構(gòu)成規(guī)則如下:

表達式關(guān)系運算符表達式其中的表達式主要是算術(shù)表達式,也可以是字符型數(shù)據(jù)或關(guān)系表達式、邏輯表達式、條件表達式、賦值表達式、逗號表達式等。關(guān)系表達式的值為邏輯值,邏輯值有true(用整數(shù)1表示)和false(用整數(shù)0表示)。2.4.3邏輯運算符及邏輯表達式邏輯運算符

ANSIC標準規(guī)定,參與邏輯運算的操作數(shù)可以不是邏輯值,該操作數(shù)為非0時表示真,為0時表示假,但邏輯運算的結(jié)果只可以取邏輯值(真或假),返回值為1或0。

2.4.3邏輯運算符及邏輯表達式邏輯運算真值表邏輯表達式

用邏輯運算符和圓括號將操作數(shù)連接起來的、符合C語法規(guī)則的式子稱為邏輯表達式。具體構(gòu)成規(guī)則如下:

單目邏輯運算符表達式或

表達式雙目邏輯運算符表達式其中的表達式主要是關(guān)系表達式,也可以是字符型或算術(shù)表達式、條件表達式、賦值表達式、逗號表達式等。

2.4.3邏輯運算符及邏輯表達式邏輯運算的短路特性在邏輯表達式求解時,并不是所有的邏輯運算符都要被執(zhí)行,當表達式的運算結(jié)果能夠確定以后,運算過程將立即終止,后面的部分不予執(zhí)行。這種現(xiàn)象稱為邏輯運算符的短路現(xiàn)象,也叫懶惰求值法。具體情況如下。(1)x&&y&&z

只有x為真(非0)時,才需要判斷y的值,只有x和y都為真的情況下才需要判斷z的值。(2)x||y||z

只有x為假,才需要判斷y的值,只有x和y都為假才需要判斷z的值。2.4.3邏輯運算符及邏輯表達式2.4.4賦值運算符及賦值表達式賦值運算符賦值運算符(=)用于賦值運算,是C語言中最基本的運算符,分為基本的賦值運算和復(fù)合賦值運算。由”=”連接的式子稱為賦值表達式。(1)基本賦值運算符的符號為“=”,作用是將右側(cè)的表達式賦值給左側(cè)的變量,是雙目運算符。由賦值運算符將一個變量和一個表達式連接起來的式子稱為賦值表達式。(2)復(fù)合的賦值運算,在賦值運算符“=”之前可以加上算術(shù)運算符或移位運算符構(gòu)成復(fù)合的賦值運算符。C語言規(guī)定可以使用10種復(fù)合賦值運算符,分別為+=、?=、*=、/=、%=、<<=、>>=、&=、^=、|=?!纠?-10】假設(shè)變量x=10,y=20,計算各賦值表達式的值。(1)x+=10(2)x*=y+20(3)x+=x?=x/10實例分析2.4.4賦值運算符及賦值表達式計算結(jié)果:(1)20(2)400(3)182.4.5條件運算符及條件表達式

條件運算符(?:)是C語言中唯一的一個三目運算符,其目的是進行條件判斷。條件運算符的一般格式為:

表達式1?表達式2:表達式3條件運算符的運算規(guī)則可以描述為:如果“表達式1”的值為非0(即邏輯真),則運算結(jié)果等于“表達式2”的值;否則,運算結(jié)果等于“表達3”的值//FileName:chap2_11.c#include<stdio.h>intmain(){intn;

printf("輸入一個整數(shù)n:");

scanf("%d",&n);

printf("%d是一個%s\n",n,(n%2==0?"偶數(shù)":"奇數(shù)"));

return0;}實例分析程序運行結(jié)果如下:輸入一個實數(shù)n:5↙5是一個奇數(shù)2.4.5條件運算符及條件表達式編寫一個程序,輸出用戶輸入的整數(shù)是奇數(shù)還是偶數(shù)。2.4.6逗號運算符及逗號表達式C語言提供一種特殊的運算符—逗號運算符。其功能是用它將兩個表達式連接起來,組成一個表達式,稱為逗號表達式。逗號表達式的一般形式如下:

表達式1,表達式2逗號表達式的運算過程是分別求兩個表達式的值,并以表達式2的值作為整個逗號表達式的值。

2.4.6逗號運算符及逗號表達式//FileName:chap2_12.c#include<stdio.h>intmain(){inta=2,b=4,c=6,x,y;

y=((x=a+b),(b+c));

printf("y=%d,x=%d\n\n",y,x);

return0;}實例分析程序運行結(jié)果如下:y=10,x=62.4.7sizeof運算符及sizeof表達式

sizeof是C語言的一種單目操作符。將sizeof運算符與操作數(shù)組合在一起構(gòu)成的式子稱為sizeof表達式。sizeof運算符用來獲得一個數(shù)據(jù)或數(shù)據(jù)類型在內(nèi)存中所占空間的字節(jié)數(shù)。Sizeof表達式的一般形式如下:

sizeof(表達式)或

sizeof(數(shù)據(jù)類型名)

2.4.7sizeof運算符及sizeof表達式//FileName:chap2_13.c#include<stdio.h>intmain(){inta=2;

printf("%d,",sizeof(int));

printf("%d,",sizeof(long));

printf("%d,",sizeof(float));

printf("%d,",sizeof(double));

printf("%d,",sizeof(char));

printf("%d,",sizeof(6));

printf("%d,",sizeof(a));

printf("%d",sizeof(a+6));

return0;}程序運行結(jié)果如下:4,4,4,8,1,4,4,4實例分析C語言運算符的優(yōu)先級與結(jié)合性

2.5不同數(shù)據(jù)類型數(shù)據(jù)間的混合運算

學習目標理解混合運算中數(shù)據(jù)的自動類型轉(zhuǎn)換掌握強制類型轉(zhuǎn)換規(guī)則2.5不同數(shù)據(jù)類型數(shù)據(jù)間的混合

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論