C語言-第2章C語言基礎(chǔ)_第1頁
C語言-第2章C語言基礎(chǔ)_第2頁
C語言-第2章C語言基礎(chǔ)_第3頁
C語言-第2章C語言基礎(chǔ)_第4頁
C語言-第2章C語言基礎(chǔ)_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章C語言基礎(chǔ)

2.1數(shù)據(jù)類型

2.2標識符、常量和變量2.3基本類型數(shù)據(jù)2.4運算符及表達式本章小結(jié)及作業(yè)鞏固練習(xí)2.1數(shù)據(jù)類型

存取數(shù)據(jù)必須先確定數(shù)據(jù)的編碼方式、存儲格式和所占的存儲長度,C語言中把這三者結(jié)合起來,給出幾種固定的形式,這些形式就是最基本的數(shù)據(jù)類型。為什么要設(shè)置數(shù)據(jù)類型?

在計算機中使用一定長度的存儲單元(通常是字節(jié)的倍數(shù))來存儲數(shù)據(jù)。長度決定了數(shù)據(jù)取值范圍的大小。存儲的編碼方式有:原碼、反碼、補碼、ASCII碼。。。存儲的存儲格式有:定點型、浮點型。。。數(shù)據(jù)類型基本類型(簡單)

構(gòu)造類型

指針類型空類型

數(shù)組類型結(jié)構(gòu)體類型共用體類型標準類型用戶自定義類型:整型實型字符型單精度型雙精度型枚舉類型2.1數(shù)據(jù)類型back2.2標識符、常量與變量1、字符集C語言字符集由以下幾部分組成:①字母:大、小寫英文字母共52個。②數(shù)字:0~9共10個③空白符:空格符、制表符、換行符等統(tǒng)稱為空白符。④標點和特殊字符:+-*/%_.=<>&|()[]{};?:’”!#等25個。

標識符是指用來標識變量名、符號常量名、函數(shù)名、文件名以及一些具有專門含義的有效字符序列。①以字母或下劃線(_)開頭,由字母、數(shù)字、下劃線組成的字符序列。如:num,a8,no_13d,no1,xk#1②大寫字母和小寫字母視為兩個不同的字符。③標識符的長度一般規(guī)定取前面8個字符,多余的不被識別。例如student_name和student_num被認為是相同的標識符student_。2、標識符

關(guān)鍵字標識符:預(yù)定義標識符:用戶標識符:代表固定含義,不能另作它用。(P17表2.1)代表特定含義(一般是庫函數(shù)名和預(yù)編譯處理命令名),一般不另作它用。標識符分類定義用戶標識符時注意:

大小寫有區(qū)分。如book,BOOK,Book

。標識符做到“見名知意”。如average,sum,length等。關(guān)鍵字不能作為標識符。如do,int,if等。3、常量在程序運行過程中,其值不能被改變的量稱為常量。符號常量:

#define符號常量名常量

如:#definesum10常量類型:算術(shù)型運算常量:123,3.1415926字符型常量:’a’,“hello”使用標識符#include"stdio.h"

main(){floatradius;/*radius:圓的半徑*/

floatarea,length;/*area、length:面積和周長*/

scanf("%f",&radius);/*輸入圓的半徑*/

area=3.1415926*radius*radius;/*求圓的面積*/length=2*3.1415926*radius;/*計算圓的周長*/printf(“area=%f,length=%f",area,length);}#definePI3.1415926PIPI【例】計算圓的面積和周長。(1)變量名:既代表某存儲空間,又代表該空間存儲的數(shù)據(jù)。(3)變量的數(shù)據(jù)類型:決定了存儲空間的大小。

C要求:變量必須先聲明后使用,指明其數(shù)據(jù)類型變量定義格式:數(shù)據(jù)類型標識符變量名表如:inta,b,c;floatd;(4)變量的地址:即變量所占內(nèi)存空間首字節(jié)的編號。

4、變量radius6(2)變量的值:存放在存儲單元中的數(shù)據(jù)(存儲單元內(nèi)容)。

程序執(zhí)行過程中,其值可以被改變的量#include"stdio.h"

main(){floatradius;floatarea,length;scanf("%f",&radius);area=3.1415926*radius*radius;length=2*3.1415926*radius;printf(“area=%f,length=%f",area,length);}#definePI3.1415926PIPI【例】計算圓的面積和周長。說明部分執(zhí)行部分back整型數(shù)據(jù)類型標識符整型數(shù)據(jù)有基本型、短整型、長整型和無符號型四種?;菊停ê喎Q整型):int短整型:shortint或short長整型:longint或long無符號型:表示不帶符號的整數(shù)。又可分為以下三種:無符號整型:unsignedint無符號短整型:unsignedshort無符號長整型:unsigned1ong整型數(shù)據(jù)2.3基本類型數(shù)據(jù)類型名稱占用的字節(jié)數(shù)數(shù)值范圍int4-2147483648(-231)~2147483647(231-1)shortint2-32768(-215)~32767(215-1)longint4-2147483648(-231)~2147483647(231-1)unsignedint40~4294967295(232-1)unsignedshort20~65535(216-1)unsignedlong40~4294967295(232-1)表2.1各種整型數(shù)據(jù)所占內(nèi)存字節(jié)數(shù)和取值范圍原碼=補碼=反碼原碼原碼除符號位其余位取反+1補碼正整數(shù):負整數(shù):反碼+1如:求-5的補碼如何求整數(shù)的補碼?整數(shù)在內(nèi)存中的存儲方式:補碼例如:

intk;long

p,q;unsignedshortn,m;任何一種數(shù)據(jù)都有常量和變量兩種形式2、整型變量的定義變量定義后,只是在內(nèi)存中申請了相應(yīng)的空間,此時存儲空間中并沒有有意義的數(shù)據(jù),即變量沒有確定的值。C語言中整型常量可以用3種形式表示:

①十進制數(shù),如+123,-234,0,23;

②八進制數(shù),如0234,0777;

③十六進制數(shù),如0x234,0x9A。整型數(shù)又分為基本整型、短整型、長整型(后加l或L)

和無符號整型數(shù)(后加u或U)

。前綴、后綴可同時使用以表示不同類型不同進制的整型數(shù)。如03456LU表示八進制無符號長整型數(shù)。3、整型常量二.實型數(shù)據(jù)1.類型標識符單精度型:類型標識符為float

雙精度型:類型標識符為double類型占用字節(jié)數(shù)有效數(shù)字數(shù)值范圍float46-710-37-1038

double815-1610-307-10308

2.實型變量的定義floatf,f1;doubled;3.實型常量(又稱實數(shù),只有十進制形式)小數(shù)形式指數(shù)形式由數(shù)字和小數(shù)點組成(必有小數(shù)點,但其前后0可省)例如:0.246.2465.05.等。格式:整數(shù)部分.小數(shù)部分e指數(shù)部分

(e或E前必有數(shù)字,后必為整數(shù))例如:135e312.12e-5.123e40e0

e23.5e1.5在程序中,實數(shù)可以用小數(shù)或指數(shù)形式表示,但在內(nèi)存中,實數(shù)都以規(guī)范化的指數(shù)形式存放。#include"stdio.h"main(){floatx=123456789;doubley=123456789;printf("\nx=%f,y=%f",x,y);}程序運行的結(jié)果:x=123456792.000000,y=123456789.000000實型常量不區(qū)分float型和double型,可以賦給float型和double型變量,根據(jù)變量的類型截取常量中的有效位數(shù)字?!纠繉⒁粋€有效數(shù)字位超過7位的數(shù)賦值給實型變量,然后輸出實型變量的值。1.字符型數(shù)據(jù)類型標識符(char)

三.字符型數(shù)據(jù)

如:charx;

一個字符變量占一個字節(jié),一個字符變量只能存放一個字符2.字符型變量的定義3.字符型常量用單引號括起來的字符。代表ASCII字符集中的一個字符兩種表示形式:由單引號括起來的普通字符常量;如‘A’,’a’,‘3’,‘

由單引號括起來的轉(zhuǎn)義字符;如‘\n’,‘\t’

單引號中的大小寫字母代表不同的字符常量。如:’a’,’A’

’是一個字符常量,有一空格,和’’的區(qū)別。單引號中只能包含一個字符只能用‘’表示字符常量,“”表示的是字符串常量(1)普通字符常量

以一個反斜線開頭后跟一個特定的字符,代表某一特定的ASCII字符。又稱反斜線字符。如:’\n’,’\’’\后可跟8進制或16進制數(shù),表示一個ASCII字符如:’A’也可用’\101’

‘\x41’表示。(2)轉(zhuǎn)義字符常量#include"stdio.h"main(){printf("\n\t\101");printf("\n\t\b\b\b\b");printf("\\*hello*\\");printf("\n\t\x41");}輸出結(jié)果:

A\*hello*\ A【例】使用轉(zhuǎn)義字符控制輸出。4.字符型數(shù)據(jù)在內(nèi)存中的存儲形式c2c10100000100001010圖2.5字符型數(shù)據(jù)的存儲charc1,c2;c1=’A’;c2=’\n’

一個字符型數(shù)據(jù)既可以以字符形式,也可以以整數(shù)形式輸出【例2.3】字符型數(shù)據(jù)的輸出。#include"stdio.h"main(){charc1;

c1=65;

printf(“%c,%d\n”,c1,c1);}字符型數(shù)據(jù):0-255的整數(shù)輸出結(jié)果:A,65可對字符數(shù)據(jù)進行的運算算術(shù)運算

‘B’-’A’等價于66-65等價于1‘a(chǎn)’+1等價于97+1等價于98等價于’b’大小寫字母的相互轉(zhuǎn)換:‘A’+32等價于65+32等價于97等價于’a’‘b’-32等價于98-32等價于66等價于’B’數(shù)字字符與相應(yīng)整數(shù)值的相互轉(zhuǎn)換:‘9’-’0’等價于57-48等價于99+’0‘等價于9+48等價于‘9’【例】#include"stdio.h"main(){charc1,c2;c1='A';c2='b';c1=c1+32; c2=c2-32;

printf("c1=%c,c2=%c",c1,c2);}四.字符串常量

用一對雙引號括起來的一串字符;如“hello”,“%d%d”

字符串長度:為字符個數(shù)字符串存儲:在內(nèi)存中占的字節(jié)數(shù)=字符個數(shù)+1

C規(guī)定:自動在一個字符串的末尾加一個串結(jié)束標志’\0’

如:“hello”在內(nèi)存中的存儲形式是(該字符對應(yīng)ASCII碼值):1041011081081110

為了能直觀理解,以后直接用字符本身表示。上例表示成:hello\01.空串“”和空格串“

”的區(qū)別

2.字符常量’b’與字符串常量”b”的區(qū)別形式上:定界符不同:單引號‘

’;雙引號“”內(nèi)存表示:都存儲ASCII碼,但’b’占1個字節(jié),”b”占2個字節(jié)注意:C語言中沒有字符串變量,字符串存放在字符數(shù)組中。注意變量賦初值是指在定義變量的同時對變量進行賦值。例如:

inta=5;

inta,b,c=10;

五.變量賦初值如果對幾個變量賦以同一個初值,不能寫成:

inta=b=c=8;而應(yīng)寫成:

inta=8,b=8,c=8;back

運算符:算術(shù)運算符、關(guān)系運算符、賦值運算符、逗號運算符等表達式:由運算對象(常量、變量、函數(shù))、運算符和括號組成的、有意義的、符合C語言規(guī)定的式子。表達式的求值規(guī)則:先按運算符的“優(yōu)先級”由高到底進行,若級別相同,則按運算符的“結(jié)合性”處理。2.4運算符和表達式結(jié)合性右結(jié)合性:自右至左的結(jié)合方向左結(jié)合性:自左至右的結(jié)合方向一、算術(shù)運算符和算術(shù)表達式1.算術(shù)運算符及優(yōu)先級和結(jié)合性

雙目:+(加法運算符) -(減法運算符) *(乘法運算符) /(除法運算符) %(模運算符或求余運算符)說明:1.除%外,雙目運算對象可以是整型、實型。%運算對象只能是整型。2.操作數(shù)類型一致時運算結(jié)果與操作數(shù)類型一致。3.不一致時不能直接運算,數(shù)據(jù)類型需要轉(zhuǎn)換整除:整/整=整(舍去所有小數(shù)部分≠四舍五入)

8/3=2實除:兩實數(shù)或與一實數(shù)相除=雙精度型。如:8/3.0=2.6666666整型%整型=整型如:8%3=2-19%4=-3

(在VC6.0中結(jié)果的符號與被除數(shù)相同) /(除法運算符)%(模運算符或求余運算符)

單目:

+(正值運算符)+3-(負值運算符)-3,-2.0注:1.運算符必須出現(xiàn)在運算對象的左邊。

2.運算對象可以是整型、實型。2.算術(shù)運算符和圓括號的優(yōu)先級:()+-*/%+-單目雙目同級同級同級結(jié)合性:高低雙目:從左到右單目:從右到左優(yōu)先級a-b+c3.算術(shù)表達式:

算術(shù)運算符和括號將運算對象連接起來的、符合C語法規(guī)則的式子常量、變量、函數(shù)等2+sqrt(c)*b

求值規(guī)律:

1)括號可以嵌套多層,但左右括號必須配對。由內(nèi)向外計算。

2)不同級別的運算符,按優(yōu)先級由高到低運算同一級別運算符,按結(jié)合性運算

3)若一個運算符兩側(cè)數(shù)據(jù)類型不同,則先進行類型轉(zhuǎn)換,然后計算。如:2

*3%5/4a*b/c-1.5(a,b,c為變量)inti=10;floatf=12.0,e=10.0;doubled=12.0;10+i*f-d/edoublefloatlongunsignedintchar,short高低為必定的轉(zhuǎn)換當運算符兩側(cè)的運算對象的數(shù)據(jù)類型不一致時的轉(zhuǎn)換方向。

注:

102.400103110.4004.基本類型數(shù)據(jù)間的混合運算5+‘b‘-x/2+y*mintm=2,floatx=1.2,doubley=4.00.600-+8.0001)自動類型轉(zhuǎn)換功能:將表達式的值轉(zhuǎn)換為指定類型。

如:(double)a(把a轉(zhuǎn)換為double類型)(int)(x+y)(把x+y的值轉(zhuǎn)換為整型,)(float)(5%3)(把5%3的值轉(zhuǎn)換為float型)

注:1.(int)x+y(把x轉(zhuǎn)換為整型,然后與y相加)2.表達式為變量時不加()。

3.強制類型轉(zhuǎn)換或自動類型轉(zhuǎn)換,只是得到了一個所需類型的中間變量,原變量或表達式的值和類型并不變。

4.強制類型轉(zhuǎn)換的優(yōu)先級高于自動類型轉(zhuǎn)換。強制類型轉(zhuǎn)換運算符2)強制類型轉(zhuǎn)換

格式:(類型名)(表達式)#include<stdio.h>main(){inti=1,j=5,k1,k2,k3;floatx=5.7,y=2.8,z1,z2,z3;k1=(int)x;k2=(int)(x)/y;k3=(int)(x/y);z1=(float)i;z2=(float)i/j;z3=(float)(i/j);printf("k1=%d\n",k1);printf("k2=%d\n",k2);printf("k3=%d\n",k3);printf("z1=%f\n",z1);printf("z2=%f\n",z2);printf("z3=%f\n",z3);}【例2.6】強制類型轉(zhuǎn)換示例1.

基本賦值運算符:=

如:a=10

復(fù)合賦值運算符:+=,-=,*=,/=等二、賦值運算符和賦值表達式格式:變量名賦值運算符表達式a=3a=a+1a+=5

a=b=c=12.賦值表達式:由賦值運算符組成的表達式a

10(1)賦值運算符的優(yōu)先級只高于逗號運算符,右結(jié)合性。(2)右側(cè)<表達式>也可以是一個賦值表達式。例1:下列程序段執(zhí)行后,變量a的值?

inta,b,c;

a=5;

a=(b=5);

a=(b=5)+(c=3);(4)在程序中可給一個變量多次賦值,最后賦的值為其當前數(shù)據(jù)。(3)賦值過程:

求出表達式的值,比較表達式值的類型與變量的類型,類型相同時:直接賦值類型不同時:先自動類型轉(zhuǎn)換再賦值。賦值表達式的值與類型與左邊變量的值與類型相同

如:doublef;f=23;則f=23.00000000000000

b、整型實型:舍棄小數(shù)部分.如:inti;i=12.5則i=12(5)賦值運算中的類型轉(zhuǎn)換

原則:自動把右側(cè)表達式值按左邊變量類型轉(zhuǎn)換

a、實型整型:數(shù)值不變,以浮點數(shù)形式存儲到變量中.3.復(fù)合賦值運算符任何雙目運算符問:若i=2,j=12,k=10則k+=j+=i+8的值是?===》k=k+(j=j+(i+8))值是

32

在賦值符“=”之前加上其它運算符,構(gòu)成復(fù)合運算符。

注:其它運算符放在“=”之前如:a+=3等價于a=a+3x*=y+8等價于x=x*(y+8)x%=3等價于x=x%3三、自增(++)、自減(--)運算符

如:inti=3,x;x=++i;x=i++;++和--使運算對象的值增1或減1。運算對象可為實型變量、整型變量。不能是常量或表達式如:++3,(i+j)--;等都不合法。是單目運算符。++i,--i,i++,i--都是合法的表達式。結(jié)合方向:“自右向左”。如:-i++相當于-(i++)++i,--i:前置運算符(i值先增/減1,后使用i)i++,i--:后置運算符(先使用i的值,后使i值增/減1)

相同點:變量都具有自增1或自減1的效果

不同點:表達式會有不同的值==>i=i+1=4;x=i=4;==>x=i=3;i=i+1=4;【例2.8】自增、自減運算符使用示例:#include"stdio.h"main(){inti=5,j,k;

j=++i;

i=5;

k=i++;

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

printf(“j=%d,k=%d\n”,++j,k++);}求下列算術(shù)表達式的值

2*3%5/4++a-c+b++(a=1,c=3,b=3)02a++-c+b++(a=3,b=-4,c=5)++a-c+(++b)(a=3,b=-4,c=5)-6-4逗號運算符:“,”優(yōu)先級:最低結(jié)合性:從左到右逗號表達式:用逗號將表達式連接起來的式子格式:〈表達式1〉,〈表達式2〉,······,〈表達式N〉逗號表達式的值:從左到右,依次求出各表達式的值,

表達式N的值和類型為逗號表達式的值和類型。如:x=(a=3,b=5,c=b*4)t=3,t+2(a=2*3,a*5),a+6四、逗號運算符和逗號表達式五、sizeof運算符

sizeof運算符是一個單目運算符,它返回變量或數(shù)據(jù)類型的字節(jié)長度。一般形式為:

sizeof(類型標識符)

sizeof(變量名)

例如:

sizeof(double)

sizeof(int)

設(shè)有下列程序段:

floatf;

inti;

i=sizeof(f);

則變量i的值為4。back鞏固練習(xí)(1)若變量a是int類型,并執(zhí)行了語句:

a=‘A’+1.6;則正確敘述是______。

A)a的值是字符C

B)a的值是浮點型

C)不允許字符型和浮點型相加

D)a的值是字符'A'的ASCII值加上l√鞏固練習(xí)(2)若以下選項中變量已正確定義,則正確的賦值語句是______。

A)x1=26.8%3;B)1+2=x2;

C)x3=0x12;D)x4=1+2=3;√(3)以下選項中不屬于C語言的類型的是_____。

A)short

溫馨提示

  • 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

提交評論