C語言程序設計教程c2_第1頁
C語言程序設計教程c2_第2頁
C語言程序設計教程c2_第3頁
C語言程序設計教程c2_第4頁
C語言程序設計教程c2_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章C語言基礎

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

2.2標識符、常量和變量

2.3基本類型數(shù)據(jù)2.4運算符及表達式數(shù)據(jù)類型基本類型(簡單)

構造類型

指針類型空類型

數(shù)組類型結構體類型共用體類型標準類型用戶自定義類型:整型實型字符型單精度型雙精度型枚舉類型2.1

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

標識符、常量與變量1、字符集

C語言字符集由以下幾部分組成:①字母:大、小寫英文字母共52個。②數(shù)字:0~9共10個③空白符:空格符、制表符、換行符等統(tǒng)稱為空白符共3個。④標點和特殊字符:+-*/%_.=<>&|()[]{};?:’”!#等25個。標識符是指用來標識變量名、符號常量名、函數(shù)名、文件名以及一些具有專門含義的有效字符序列。①以字母或下劃線(_)開頭,由字母、數(shù)字、下劃線組成的字符序列。如:num,a8,no_13d,no1,xk#1②大寫字母和小寫字母視為兩個不同的字符。③標識符的長度一般規(guī)定取前面8個字符,多余的不被識別。例如student_name和student_num被認為是相同的標識符student_。2、標識符:關鍵字標識符:預定義標識符:用戶標識符:代表固定含義,不能另作它用。代表特定含義(一般是庫函數(shù)名和預編譯處理命令名),一般不另作它用。標識符分類定義用戶標識符時注意:大小寫有區(qū)分。如book,BOOK,Book

。標識符做到“見名知意”。如average,sum,length等。關鍵字不能作為標識符。如do,int,if

等。3、常量:在程序運行過程中,其值不能被改變的量稱為常量。符號常量:

#define符號常量名常量常量類型:算術型運算常量:123,3.1415926字符型常量:’a’,“hello”#include"stdio.h"

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

floatarea,length;/*area圓的面積*/

printf("Pleaseinputradius:");

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

area=3.1415926

*radius*radius;/*計算圓的面積*/length=2*3.1415926*radius;/*計算圓的周長*/

printf(“area=%f,length=%f",area,length);}#definePI3.1415926PIPI【例】計算圓的面積和周長。程序執(zhí)行過程中,其值可以被改變的量

(1)變量名:既代表某存儲空間,又代表該空間存儲的數(shù)據(jù)。(3)變量的數(shù)據(jù)類型(內存中占據(jù)內存空間的大小和變量的取值范圍)C要求:變量必須先聲明后使用,指明其數(shù)據(jù)類型變量定義格式:數(shù)據(jù)類型標識符變量名表如:inta,b,c;floatd;(4)變量的地址:即變量所占內存空間的首字節(jié)的編號。4、變量:a6(2)變量的值:存放在存儲單元中的數(shù)據(jù)(存儲單元內容)。

標識符

#include"stdio.h"main(){inttotal;

num=5;price=3;total=price*num;printf("total=%d",total);}【例】用price代表商品單價、num代表商品數(shù)量,然后計算商品的總價total。整型數(shù)據(jù)類型標識符整型數(shù)據(jù)有基本型、短整型、長整型和無符號型四種?;菊停ê喎Q整型):類型標識符為int。短整型:類型標識符為shortint或short。長整型:類型標識符為1ongint或1ong。無符號型:表示不帶符號的整數(shù)。又可分為以下三種:無符號整型:類型標識符為unsignedint。無符號短整型:類型標識符為unsignedshort無符號長整型,類型標識符為usigned1ong。整型數(shù)據(jù)2.3基本類型數(shù)據(jù)類型名稱占用的字節(jié)數(shù)數(shù)值范圍int

2-32768(-215)~32767(215-1)shortint

2-32768(-215)~32767(215-1)longint

4-2147483648(-231)~2147483647(231-1)unsignedint

20~65535(216-1)unsignedshort20~65535(216-1)unsignedlong40~4294967295(232-1)表2.1各種整型數(shù)據(jù)所占內存字節(jié)數(shù)和取值范圍整數(shù)在內存中的存儲方式:補碼0000001010100100 0000001010100100 0000001010100100000000101010010000000000

0000

0000

000000101010010000000000

0000

0000

0000001010100100int

型short型long型unsignedint

型unsignedshort型unsignedlong型圖2.2整型數(shù)據(jù)676的存儲情況符號位原碼=補碼=反碼原碼原碼除符號位其余位取反+1補碼正整數(shù):負整數(shù):求11111010對應的負整數(shù)各位取反轉換為十進制數(shù)加負號再減1反碼+1如:求-5的補碼如何求整數(shù)的補碼?例如:intk;longp,l;

unsignedshortn,m;任何一種數(shù)據(jù)類型都有常量和變量之分2、整型變量的定義變量定義后,只是在內存中申請了相應的空間,此時存儲空間中并沒有有意義的數(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.實型數(shù)據(jù)類型標識符實型數(shù)據(jù)有單精度型和雙精度型兩種。

單精度型:類型標識符為float。

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

double815-1610-307-10308

實型數(shù)據(jù)存儲方式:規(guī)范化的指數(shù)形式

假設機器字長為32位,其指數(shù)(即階碼)部分占8位,尾數(shù)占24位,則如圖所示。11101011011101011000000000000000313024232210階符指數(shù)部分數(shù)符尾數(shù)部分二進制數(shù)據(jù)0.00000011101011的存儲形式指其尾數(shù)部分為純小數(shù),即小數(shù)點前整數(shù)部分小于1,小數(shù)點后的第1位大于02.實型變量的定義floatf,f1;

/*定義f、f1為單精度實型變量*/doubled;

/*定義d為雙精度實型變量*/3.實型常量(又稱實數(shù),只有十進制形式)小數(shù)形式指數(shù)形式由數(shù)字和小數(shù)點組成(必有小數(shù)點,但其前后0可省)例如:0.246.2465.05.等。由小數(shù)或整數(shù)、字母E或e及指數(shù)部分組成。(e前必有數(shù)字,后必為整數(shù))其格式為:整數(shù)部分.小數(shù)部分E指數(shù)部分例如:135e312.12e-5.123e40e0e23.5e1.5在程序中,實數(shù)可以用小數(shù)或指數(shù)形式表示,但在內存中,實數(shù)都以規(guī)范化的指數(shù)形式存放。#include"stdio.h"main(){floatx=123456789;doubley=123456789;

printf("\nx=%f,y=%f",x,y);}程序運行的結果:x=123456792.000000,y=123456789.000000實型常量不區(qū)分float型和double型,可以賦給float型和double型變量,根據(jù)變量的類型截取常量中的有效位數(shù)字?!纠繉⒁粋€有效數(shù)字位超過7位的數(shù)賦值給實型變量,然后輸出實型變量的值。1.字符型數(shù)據(jù)類型標識符類型標識符為char,在內存中存儲一個字符型數(shù)據(jù)需要一個字節(jié)。三.字符型數(shù)據(jù)說明字符變量用char作標識符如:charx;

一個字符變量在內存中占一個字節(jié),一個字符變量只能存放一個字符如:x=‘a(chǎn)’;將字符a賦值給字符變量x實際上是把a的ASCII代碼值97放到x對應的內存單元中去

字符變量=字符常量/字符變量/0-255的整數(shù)2.字符型變量的定義

如:charc1,c2;inti; c1=‘a(chǎn)’; c2=c1-32; i=97;

printf(‘%c,%d\n’,c1,c1);c1c2i=====c1=97;===c2=‘A’;===c2=65;===c2=‘a(chǎn)’-32;======i=‘a(chǎn)’;=====

printf(‘%c,%d\n’,i,i);注意:**在內存中,字符數(shù)據(jù)和整型數(shù)據(jù)的存儲形式相似,所以在c語言中二者可以通用。9765973.字符型常量字符常量:

用單引號括起來的字符。代表ASCII字符集中的一個字符

兩種表示形式:由單引號括起來的普通字符常量;如‘A’,’a’,‘3’,‘’

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

單引號中的大小寫字母代表不同的字符常量。如:’a’,’A’’a’和a的區(qū)別‘’是一個字符常量,有一空格,和’’的區(qū)別。單引號中只能包含一個字符只能用‘’表示字符常量,“”表示的是字符串常量

C語言規(guī)定:字符型常量在內存中占8位(一個字節(jié))。字符常量在內存中實際存儲的是其ASCII碼的值如:‘A’—’a’—‘3’—一、普通字符常量659751字符常量和整型常量是可以混用的。

以一個反斜線開頭后跟一個特定的字符,代表某一特定的ASCII字符。又稱反斜線字符。如:’\n’,’\’’\后可跟8進制或16進制數(shù),表示一個ASCII字符如:’A’也可用’\101’或’\0101’’\x41’表示(\后不允許用X,0x)二、轉義字符常量#include"stdio.h"main(){printf("\n\t\101");printf("\n\t\b\b\b\b");printf("\\*hello*\\");printf("\n\t\x41");}輸出結果:

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

【例2.3】字符型數(shù)據(jù)的輸出。main(){charc1;

c1=65;

printf(“%c,%d\n”,c1,c1);}可對字符數(shù)據(jù)進行的運算字符型數(shù)據(jù)可參與任何整數(shù)運算如:算術運算’B’-’A’等價于66-65等價于1‘a(chǎn)’+1等價于97+1等價于98等價于’b’

大小寫字母的相互轉換:

‘A’+32等價于65+32等價于97等價于’a’‘b’-32等價于98-32等價于66等價于’B’

數(shù)字字符與相應整數(shù)值的相互轉換:

‘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”C規(guī)定:在一個字符串的末尾加一個串結束標志’\0’

在內存中占的字節(jié)數(shù)=字符個數(shù)+1如:“hello”在內存中的存儲形式是(該字符對應ASCII碼值):1041011081081110

為了能直觀理解,以后直接用字符本身表示。上例表示成:hello\0注意:在寫字符串時不必加'\0',否則畫蛇添足。'\0'字符是系統(tǒng)自動加上的。

“”和“”的區(qū)別字符常量與字符串常量的區(qū)別:(’b’與”b”)形式上:‘’括起來的單個字符或以\開頭“”內存表示:都存儲ASCII碼,但字符常量占一個字節(jié),轉義字符也不例外注意:C語言中沒有字符串變量,字符串存放在字符數(shù)組中。變量賦初值是指在定義變量的同時對變量進行賦值。例如:

inta=5;

int

a,b,c=10;

五.變量賦初值

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

inta=b=c=8;而應寫成:

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

雙目:

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

8/3=2實除:兩實數(shù)或與一實數(shù)相除=雙精度型。如:8/3.0=2.6666666整型%整型=整型如:8%3=2-19%4=-3(運算量為負數(shù)時,在TC中結果的符號與被除數(shù)相同) /(除法運算符)%(模運算符或求余運算符)單目:

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

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

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

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

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

3)若一個運算符兩側數(shù)據(jù)類型不同,則先進行類型轉換,然后計算。如: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高低為必定的轉換當運算符兩側的運算對象的數(shù)據(jù)類型不一致時的轉換方向。

注:

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

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

注:1.整型數(shù)轉換為實型時,補足有效位數(shù);實型數(shù)轉換為整型時,只取其整數(shù)部分。

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

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

5.強制類型轉換的優(yōu)先級高于自動類型轉換。強制類型轉換運算符2)強制類型轉換格式:(類型名)(表達式)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】強制類型轉換示例1.

基本賦值運算符:=

如:a=10

復合賦值運算符:+=,-=,*=,/=等二、賦值運算符和賦值表達式格式:〈變量〉

賦值運算符〈表達式〉

作用:把表達式的值賦給一個變量。a=3a=a+1a+=5

a=b=c=1(結合性:自右向左)2.賦值表達式:由賦值運算符組成的表達式a10(1)賦值運算符可以是基本的、復合的賦值運算符。

賦值運算符的優(yōu)先級只高于逗號運算符。

〈表達式〉也可以是一個賦值表達式。

賦值表達式的值與類型=賦值運算符左邊變量的值與類型例1:inta,b,c;

a=5;

a=(b=5);a=(b=5)+(c=3);(3)在程序中可給一個變量多次賦值,最后賦的值為其當前數(shù)據(jù)。(2)賦值運算符左側必須是變量,不能是常量或表達式。(4)賦值過程:求出表達式的值,比較表達式值的類型與變量的類型,類型相同時:直接賦值類型不同時:先自動類型轉換再賦值。如:floatf;f=23;則f=23.00000

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

b、整型實型:舍棄小數(shù)部分.如:inti;i=12.5則i=12(5)賦值運算中的類型轉換原則:賦值前,自動把右側表達式值按左邊變量類型轉換

a、實型整型:數(shù)值不變,但以浮點數(shù)形式存儲到變量中.c、整型字符型:將字符數(shù)據(jù)(8位)作為整型變量的低8位,高8位的處理有以下兩種情況:①如果所用系統(tǒng)將字符處理為無符號的量或對unsignedint

型變量賦值,則高8位補零。②如果所用系統(tǒng)將字符處理為帶符號的量,若字符最高位為0,則整型變量高8位補0;若字符最高位為1,則高8位補1.

a='\341'111000010000

00

00

intj(a)11100001

a='\341'(b)11100001111000011111

11

11000000000000000011111111111110001111111111111111低位字節(jié)照寫,高位字節(jié)擴展: 被轉換為有符號型(左邊)時:符號位擴展 被轉換為無符號類型時:0擴展

00000000000010000000000000000000000000000000100011111111111110000000000000000000inta=8;longintb;b=a;符號位符號位符號位inta=-8;longintb;b=a;符號位

unsignedlongd、(1)較長的整型變量較短的整數(shù)000000000000100000000000000010000000000000000000(2)較短型整數(shù)較長型整數(shù):只截取低位字節(jié)位。inta;longintb=8;a=b;符號位符號位e.①長整型變量無符號的整數(shù):低位賦值,不足的高位補0

11111111111111111111111111111111-1unsignedinta=65535;intb;b=a;②同長整型變量無符號的整數(shù):若數(shù)據(jù)超出范圍,則出錯

000000000000100000000000000000000000000000001000符號位unsignedinta=8;longintb;b=a;數(shù)值位數(shù)值位符號位f.同長無符號整型變量帶符號的整數(shù):(符號作為數(shù)據(jù)傳入)例2.7main(){unsignedinti;

intj=-6;i=j;

printf(“%u”,i);}11111111111110101111111111111010結果:65530ij補碼

數(shù)值位符號位3.復合賦值運算符任何雙目運算符若i=2,j=12,k=10則k+=j+=i+8的值是?===》k=k+(j=j+(i+8))值是

32在賦值符“=”之前加上其它運算符,構成復合運算符。注:其

溫馨提示

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

評論

0/150

提交評論