C語言基本數(shù)據(jù)類型_第1頁
C語言基本數(shù)據(jù)類型_第2頁
C語言基本數(shù)據(jù)類型_第3頁
C語言基本數(shù)據(jù)類型_第4頁
C語言基本數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第二講基本數(shù)據(jù)類型什么是數(shù)據(jù)類型?著名計(jì)算機(jī)科學(xué)家NikiklausWirth提出一個公式

數(shù)據(jù)結(jié)構(gòu)+算法=程序

實(shí)際上結(jié)構(gòu)化的程序設(shè)計(jì)可以表示為:程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+語言工具和環(huán)境C的數(shù)據(jù)結(jié)構(gòu)就是以數(shù)據(jù)類型的形式出現(xiàn)的知識要點(diǎn)2.1C語言的數(shù)據(jù)類型2.2數(shù)值數(shù)據(jù)的表示2.3文字?jǐn)?shù)據(jù)的表示2.4變量的定義和賦值2.5

C語言類型修飾符2.6表達(dá)式中數(shù)據(jù)類型轉(zhuǎn)換2.1C語言的數(shù)據(jù)類型

C語言提供的數(shù)據(jù)類型分類如下:

知識要點(diǎn)2.1C語言的數(shù)據(jù)類型2.2數(shù)值數(shù)據(jù)的表示2.3文字?jǐn)?shù)據(jù)的表示2.4變量的定義和賦值2.5

C語言類型修飾符2.6表達(dá)式中數(shù)據(jù)類型轉(zhuǎn)換2.2數(shù)值數(shù)據(jù)的表示C語言中使用的數(shù)值數(shù)據(jù)有兩種:整數(shù)和浮點(diǎn)小數(shù)。整數(shù)

表示形式:十進(jìn)制:123 456八進(jìn)制:011 072十六進(jìn)制:0x11 -0x32

一般整數(shù)的存儲空間為2個字節(jié),取值范圍一般為

-215~215-1,即-32768~32767。如果超過這個范圍,只有使用占4個字節(jié)的長整型數(shù),即在整數(shù)后面加上一個字母L(大小寫均可),此時取值范圍可以擴(kuò)大到-231~231-1,即-2147483648~2147483647。

C語言中使用的數(shù)值數(shù)據(jù)有兩種:整數(shù)和浮點(diǎn)小數(shù)。浮點(diǎn)小數(shù)

C語言中的浮點(diǎn)小數(shù)描述的是實(shí)數(shù),可以采用十進(jìn)制小數(shù)形式或者指數(shù)形式表示。十進(jìn)制小數(shù)形式:包含整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分。如1.3234.0注意:其中小數(shù)點(diǎn)不能省略,34與34.0不是一樣的。指數(shù)形式:包含尾數(shù)部分、字母E或e和階碼。例如2.78E12。注意:尾數(shù)部分不能省、階碼必須是整數(shù)。浮點(diǎn)小數(shù)一般為單精度浮點(diǎn)類型,占用4個字節(jié),有效位數(shù)6~7位,如果需要精度特別高,可以采用雙精度浮點(diǎn)類型,有效位數(shù)可以達(dá)到16~17位。知識要點(diǎn)2.1C語言的數(shù)據(jù)類型2.2數(shù)值數(shù)據(jù)的表示2.3文字?jǐn)?shù)據(jù)的表示2.4變量的定義和賦值2.5

C語言類型修飾符2.6表達(dá)式中數(shù)據(jù)類型轉(zhuǎn)換2.3文字?jǐn)?shù)據(jù)的表示C語言把文字?jǐn)?shù)據(jù)分為兩種類型:單個字符和字符串。單個字符

單個字符的表現(xiàn)形式是由單引號括起來的一個字符,例如:’a’

‘A’

‘+’

‘5’

‘$’。其中單引號、雙引號和反斜杠的表現(xiàn)形式比較特殊,分別是’\’’、’\”’、’\\’。在C語言中轉(zhuǎn)義字符被認(rèn)為是具有特殊意義的單個字符,例如’\n’,代表一個換行符。單個字符在內(nèi)存中只占用1個字節(jié),其存儲的內(nèi)容為該字符在ASCII碼表中對應(yīng)的數(shù)值。

C語言把文字?jǐn)?shù)據(jù)分為兩種類型:單個字符和字符串。字符串

字符串是由雙引號括起來的字符序列,例如:”thisisaprogram.”

”IloveC”

。字符串中的字符按照從左到右的順序,依次存儲在一段連續(xù)的空間里,其中每一個字符占用一個字節(jié),其內(nèi)容為該字符在ASCII碼表中對應(yīng)的數(shù)值。注意:C語言的字符串在實(shí)際存儲時,將自動在字符串尾部加了一個結(jié)束標(biāo)志‘\0’(其ASCII碼值為0)。思考:‘a(chǎn)’

“a”

是相同的嗎?無雞鴨也可無魚肉也可蘿卜青菜不可少不得大米無雞鴨也可,無魚肉也可,蘿卜青菜不可少,不得大米。無雞,鴨也可,無魚,肉也可,蘿卜青菜不可,少不得大米。知識要點(diǎn)2.1C語言的數(shù)據(jù)類型2.2數(shù)值數(shù)據(jù)的表示2.3文字?jǐn)?shù)據(jù)的表示2.4變量的定義和賦值2.5C語言類型修飾符2.6表達(dá)式中數(shù)據(jù)類型轉(zhuǎn)換2.4變量的定義和賦值C語言中的數(shù)據(jù)有兩種基本形式:常量和變量。常量的值是固定的,變量是可以改變的

變量的定義

類型標(biāo)識符變量名;

變量在定義時要注意以下幾個問題:變量的命名要符合C語言規(guī)定的標(biāo)識符的命名規(guī)則,即只能由字母、數(shù)字和下劃線組成,首字母必須為字母或下劃線。此外C語言中規(guī)定的有特殊用途的關(guān)鍵字,例如int、float、if等,不能作為變量名稱。

ab2stu1x1_1sum_name1正確

2acstu-1len#1elseintfloat不正確C語言中大小寫是敏感的。但是習(xí)慣上,C中的變量一般用小寫字母表示。變量的定義變量的數(shù)據(jù)類型決定了它的存儲類型,即該變量占用的存儲空間。所以定義變量類型,就是為了給該變量分配存儲空間,以便存放數(shù)據(jù)。基本的變量類型及其存儲空間見表2.1:

類型名稱存儲空間取值范圍實(shí)例int整型2個字節(jié)介于-32768~32767的整數(shù)inti,j;float單精度浮點(diǎn)型4個字節(jié)實(shí)數(shù),有效位數(shù)6~7位floatx;double雙精度浮點(diǎn)型8個字節(jié)實(shí)數(shù),有效位數(shù)15~16位doubley;char字符型1個字節(jié)ASCII碼字符,或-128~127的整數(shù)charc;變量的賦值變量需要預(yù)置一個值,即賦值。賦值操作通過賦值符號“=”把右邊的值賦給左邊的變量:

變量名=表達(dá)式;

例如x=3;a=a+1;f=3*4+2;

注意數(shù)學(xué)中的“=”符號不同于C語言中的賦值符號“=”。其中需要注意的是:如果賦值時兩側(cè)類型不一致時,系統(tǒng)將會作如下處理:

將實(shí)數(shù)賦給一個整型變量時,系統(tǒng)自動舍棄小數(shù)部分。

將整數(shù)賦給一個浮點(diǎn)型變量時,系統(tǒng)將保持?jǐn)?shù)值不變并且以浮點(diǎn)小數(shù)形式存儲到變量中。

當(dāng)字符型數(shù)據(jù)賦給一個整型變量時,不同的系統(tǒng)實(shí)現(xiàn)的情況不同,一般當(dāng)該字符的ASCII值小于127時,系統(tǒng)將整型變量的高字節(jié)置0、低字節(jié)存放該字符的ASCII值。

變量在定義的同時也可以賦初值,稱作變量的初始化。字符型變量的值可以是字符型數(shù)據(jù)、介于-128~127的整數(shù)或者轉(zhuǎn)義字符。/*--------------------------------------------

程序L2_1.C功能:賦值時類型自動的轉(zhuǎn)換示例。---------------------------------------------*/#include<stdio.h>main(){inta,x;floatf;a=3.9;f=12;x='A';printf("a=%d,f=%f,x=%d\n",a,f,x);}運(yùn)行結(jié)果:a=3,f=12.000000,x=65/*---------------------------------------------------------------------

程序L2_2.C功能:將字符'A'賦值給字符變量的四種方法。

------------------------------------------------------------------*/

#include<stdio.h>main(){charc1,c2,c3,c4;c1='A';c2=65;c3='\101';c4='\x41';printf("c1=%c,c2=%c,c3=%c,c4=%c\n",c1,c2,c3,c4);printf("c1=%d,c2=%d,c3=%d,c4=%d\n",c1,c2,c3,c4);}思考:c1,c2,c3,c4加上32輸出結(jié)果是什么?加上256呢?知識要點(diǎn)2.1C語言的數(shù)據(jù)類型2.2數(shù)值數(shù)據(jù)的表示2.3文字?jǐn)?shù)據(jù)的表示2.4變量的定義和賦值2.5

C語言類型修飾符2.6表達(dá)式中數(shù)據(jù)類型轉(zhuǎn)換2.5C語言類型修飾符基本類型可以帶修飾性前綴,即類型修飾符,擴(kuò)大C語言基本數(shù)據(jù)類型的使用范圍。C語言共有4種類型修飾符:

long長型short短型

signed有符號型unsigned無符號型longint(簡寫為long)型的存儲長度為4個字節(jié),用于存儲整數(shù)超過int型取值范圍的情況。longdouble型存儲長度16個字節(jié),約24位有效數(shù)字,取值范圍超過double型。有符號型signed和無符號型unsigned適用于char型、int型和long型三種類型,區(qū)別在于它們的最高位是否作為符號位。unsignedchar型取值范圍0~255,unsignedint(簡寫為unsigned)型取值范圍0~65535,unsignedlong型取值范圍0~232-1。/*---------------------------------------------------------------

程序L2_3.C功能:類型修飾符long和unsigned的使用。

--------------------------------------------------------------*/

#include<stdio.h>main(){chara1,b1;unsignedchara2,b2;intx1,y1;longx2,y2;a1=127;b1=129;a2=127;b2=129;x1=32767;y1=32769;x2=32767;y2=32769;printf("a1=%d,a2=%u,b1=%d,b2=%u\n",a1,a2,b1,b2);printf("x1=%d,x2=%ld,y1=%d,y2=%ld\n",x1,x2,y1,y2);}知識要點(diǎn)2.1C語言的數(shù)據(jù)類型2.2數(shù)值數(shù)據(jù)的表示2.3文字?jǐn)?shù)據(jù)的表示2.4變量的定義和賦值2.5

C語言類型修飾符2.6表達(dá)式中數(shù)據(jù)類型轉(zhuǎn)換2.6表達(dá)式中數(shù)據(jù)類型轉(zhuǎn)換自動類型轉(zhuǎn)換C語言規(guī)定,不同類型的數(shù)據(jù)在參加運(yùn)算前會自動轉(zhuǎn)換成相同類型,再進(jìn)行運(yùn)算。轉(zhuǎn)換的規(guī)則是:如果運(yùn)算的數(shù)據(jù)有float型或double型,自動轉(zhuǎn)換成double型再運(yùn)算,結(jié)果為double型。如果運(yùn)算的數(shù)據(jù)中無float型或double型,但是有l(wèi)ong型,數(shù)據(jù)自動轉(zhuǎn)換成long型再運(yùn)算,結(jié)果為long型。其余情況為int型。doublefloatlongunsignedintchar,short高低/*------------------------------------------------

程序L2_4.C功能:自動類型轉(zhuǎn)換示例。

------------------------------------------------*/#include<stdio.h>main(){floatx,y;longm,n;x=3/2+8/3;y=3.0/2+8/3.0;m=1*2*3*4*5*6*7*8*9;n=1L*2*3*4*5*6*7*8*9;printf("x=%f,y=%f,m=%ld,n=%ld\n",x,y,m,n);}結(jié)果:X=3.000000,y=4.166667,m=-30336,n=362880強(qiáng)制類型轉(zhuǎn)換在C語言中也可以使用強(qiáng)制類型轉(zhuǎn)換符,強(qiáng)迫表達(dá)式的值轉(zhuǎn)換為某一特定類型。強(qiáng)制類型轉(zhuǎn)換形式為:

(類型)表達(dá)式

強(qiáng)制類型轉(zhuǎn)換最主要的的用途一是滿足一些運(yùn)算對類型的特殊要求,例如求余運(yùn)算符“%”,要求運(yùn)算符兩側(cè)的數(shù)據(jù)為整型,(int)2.5%3二是防止丟失整數(shù)除法中的小數(shù)部分。2.7計(jì)算機(jī)中數(shù)據(jù)的表示計(jì)算機(jī)最主要的功能是處理數(shù)據(jù),如數(shù)值、文字、圖形、圖像等。而這些數(shù)據(jù)必須被轉(zhuǎn)換為相應(yīng)的數(shù)字編碼,才能進(jìn)行存儲和處理。二進(jìn)制、八進(jìn)制、十六進(jìn)制進(jìn)制之間的轉(zhuǎn)換二進(jìn)制數(shù)在內(nèi)存中的表示字符編碼IEEE浮點(diǎn)數(shù)表示法目前已知的所有的C/C++編譯器都是按照IEEE(國際電子電器工程師協(xié)會)制定的IEEE浮點(diǎn)數(shù)表示法來進(jìn)行計(jì)算的。這種結(jié)構(gòu)是一種科學(xué)表示法,用符號(正或負(fù))、指數(shù)和尾數(shù)來表示,底數(shù)被確定為2,也就是說把一個浮點(diǎn)數(shù)表示為尾數(shù)乘以2的指數(shù)次方再加上符號。IEEE浮點(diǎn)數(shù)表示法float共計(jì)42位,折合4字節(jié)由最高到最低位分別為31、30、29、……、0位31位是符號位,1表示該數(shù)為負(fù),0反之。30-23位,一共8位是指數(shù)位。22-0位,一共23位是尾數(shù)位。123456.0f直接將整數(shù)部轉(zhuǎn)化為二進(jìn)制表示:11110001001000000然后將小數(shù)點(diǎn)向左移,一直移到離最高位只有1位,就是最高位的1:1.11100010010000000一共移動了16位小數(shù)點(diǎn)每向左移一位就等于在以2為底的科學(xué)計(jì)算法表示中指數(shù)+1,所以原數(shù)就等于:1.11100010010000000*(2^16)123456.0f指數(shù)部分,一共8位,統(tǒng)一把十進(jìn)制的整數(shù)化為二進(jìn)制時,都先加上127,在這里,我們的16加上127后就變成了143,二進(jìn)制表示為:1000111112345.6f這個數(shù)是正的,所以符號位是0我們按照前面講得格式把它拼起來:01000111111100010010000000000000/*--------------------------------------------------------------------

程序L2_5.C:十進(jìn)制、八進(jìn)制、十六進(jìn)制數(shù)據(jù)及其輸出

------------------------------------------------------------------------*/

#include<stdio.h>main(){inta,b,c,m,n;a=11;b=011;c=0x11;m=65;n=97;printf("十進(jìn)制11等于%d,八進(jìn)制11等于%d,十六進(jìn)制11等于%d,\n",a,b,c);printf("十進(jìn)制八進(jìn)制十六進(jìn)制字符\n");printf("65%o%x%c,\n",m,m,m);printf("97%o%x%c,\n",n,n,n);}/*-----------------------------------------------------------------------------

程序L2_6.C:從鍵盤輸入一個大寫字母,輸出其對應(yīng)的小寫字母。

-------------------------------------------------------------------------------*/#include<stdio.h>main(){charc;printf("請輸入大寫字母\n");scanf("%c",&c);c=c+32;/*大寫字母的ASCII碼加上32為其對應(yīng)的小寫字母*/printf("其小寫字母為%c\n",c);}/*-----------------------------------------------------------------

程序L2_7.C:已知x=3.2,y=7,z=2,計(jì)算y/3*3.2-2的值。

-----------------------------------------------------------------*/#include<stdio.h>main(){floatx=3.2,s;inty=7,z=2;charc;s=y/3*3.2-2;printf("resultis%f\n",s);}/*--------------------------------------------------------------------------

程序L2_8.C:編寫一個程序,用于輸入一個學(xué)生的姓名、學(xué)號、英語、數(shù)學(xué)、計(jì)算機(jī)成績,輸出學(xué)生姓名、學(xué)號和平均成績。

------------------------------------------------------------------------------*/

#include<stdio.h>main(){charname[31];/*

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論