第二章數據類型_第1頁
第二章數據類型_第2頁
第二章數據類型_第3頁
第二章數據類型_第4頁
第二章數據類型_第5頁
已閱讀5頁,還剩47頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第二章數據類型

本章要點數據的描述規則數據的操作規則

主要內容2.1C語言的數據類型2.2常量與變量2.3整型數據2.4浮點型數據2.5字符型數據

主要內容2.6各類數值型數據間的混合運算

2.7算術運算符和算術表達式

2.8逗號運算符和逗號表達式

2.1C的數據類型C語言提供了以下一些數據類型。

數據類型構造類型指針類型空類型(無值類型)void枚舉類型enum數組類型結構類型struct聯合類型

union基本類型整型int字符型char實型(浮點型)單精度實型

float雙精度實型

double2.2常量與變量2.2.1常量在程序運行過程中,其值不能被改變的量稱為常量常量區分為不同的類型:整型100,125,-100,0實型3.14,0.125,-3.789字符型‘a’,‘b’,‘2’說明:符號常量為了使用方便,可用一個符號名來代表一個常量。例2.1在程序中使用符號常量

#definePRICE30

#include<stdio.h>

voidmain()

{

intnum,total;

num=10;

total=num*PRICE;

printf(″total=%d\n″,total);

}符號常量:用一個標識符代表一個常量。符號常量的值在其作用域內不能改變,也不能再被賦值。運行結果:total=300說明:

程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現的PRICE都代表30,可以和常量一樣進行運算說明:如再用賦值語句給PRICE賦值是錯的PRICE=40;/*錯誤,不能給符號常量賦不能對符號常量指定類型intPRICE;/*錯誤,PRICE不是變量,不能指定類型*/

2.2常量與變量變量變量代表內存中具有特定屬性的一個存儲單元,它用來存放數據,也就是變量的值,在程序運行期間,這些值是可以改變的。變量名實際上是一個以一個名字對應代表一個地址,在對程序編譯連接時由編譯系統給每一個變量名分配對應的內存地址。從變量中取值,實際上是通過變量名找到相應的內存地址,從該存儲單元中讀取數據。2.2常量與變量變量用來標識對象名字(包括變量、函數、數組、類型等)的有效字符序列。C語言中,有3類標識符:關鍵字,系統預定義的標識符,用戶標識符。

變量的名字必須符合C語言對標識符的規定。C語言規定標識符只能由字母、數字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。

2.2常量與變量

變量命名的規定:變量的名字必須符合C語言對標示符得規定

例:sum,_total,month,Student_name,

lotus_1_2_3,BASIC,li_lingM.D.John,¥123,3D64,a>b

2.2常量與變量注意:編譯系統將大寫字母和小寫字母認為是兩個不同的字符。建議變量名的長度最好不要超過8個字符。在選擇變量名和其它標識符時,應注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標識符。要求對所有用到的變量作強制定義,也就是“先定義,后使用”。2.3整型數據整型常量的表示形式

整型常量即整常數。在C語言中,整常數可用以下三種形式表示:(1)十進制整數。

如:123,-456,4。(2)八進制整數。以0頭的數是八進制數。

如:0123表示八進制數123,等于十進制數83,-011表示八進制數-11,即十進制數-9。2.3整型數據整型常量的表示形式(3)十六進制整數。以0x開頭的數是16進制數。

如:0x123,代表16進制數123,等于十進制數291。-0x12等于十進制數-10。

整型變量整型變量用來存放整型常量。整型變量的基本類型符為int。C語言中有以下3類整型變量:基本整型,短整型,長整型。2.3整型數據

整型變量注意:

ANSIC標準沒有具體規定以上各類數據所占內存的字節數而是由各計算機系統自行決定。TurboC中,int型和short型數據都是2個字節,即16個二進制位。long型數據是4個字節,32位。而VC++則給short型數據分配2個字節,16位,int和long型數據都是4個字節,32位。2.3整型數據

整型變量

一般情況下,存儲整數時存儲單元中的第一個二進位用來代表數值符號,而在實際應用中,變量的值常常是正的,所以存儲單元全部用來存儲數值本身,此定義無符號整數。所以歸納起來,在C語言中,可以定義和使用6種整型變量共六種有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)

注意:括號表示其中的內容是可選的.2.3整型數據

整型變量整數類型的有關數據:

類型類型說明符長度數的范圍基本型int

2字節-32768~32767

短整型short2字節-215~215-1

長整型long4字節-231~231-1

無符號整型unsigned2字節0~65535

無符號短整型unsignedshort2字節0~65535

無符號長整型unsignedlong4字節0~(232-1)例2.2整型變量的定義與使用

#include<stdio.h>

voidmain()

{inta,b,c,d;/*指定a、b、c、d為整型變量*/

unsignedu;/*指定u為無符號整型變量*/

a=12;b=-24;u=10;

c=a+u;d=b+u;

printf(″a+u=%d,b+u=%d\n″,c,d);

}說明:

可以看到不同種類的整型數據可以進行算術運算運行結果:a+u=22,b+u=-14

2.3整型數據

整型數據在內存中的存放形式

數據在內存中以二進制形式存放。

如:

inti;/*定義為整型變量*/i=10;/*給i賦以整數10*/

ii(a)(b) 0000000000001010102.3整型數據

整型數據在內存中的存放形式實際上,數值是以補碼表示的。一個正整數的補碼和該數的原碼相同。負數的補碼是:將該數的絕對值的二進制形式,按位取反再加1。

10的原碼(a)取反(b)得-10的補碼(c)

000000000000101011111111111101011111111111110110例2.3整型數據的溢出

#include<stdio.h>

voidmain()

{inta,b;

a=32767;

b=a+1;

printf(“%d,%d\n”,a,b);

}說明:數值是以補碼表示的。一個整型變量只能容納-32768~32767范圍內的數,無法表示大于32767或小于-32768的數。遇此情況就發生“溢出”。運行結果:32767,-327682.3整型數據

2.3.4整型數據的溢出

如果系統給一個整型變量分配2個字節,則變量的最大允許值為32767,若超出最大職則出現溢出現象。

2.3整型數據2.3.5整型常量的類型

整型變量的分類規則:

(1)一個整數,如果其值在-32768~+32767范圍內,認為它是int型,它可以賦值給int型和longint型變量。

(2)一個整數,如果其值超過了上述范圍,而在-2147483637~+2147483647范圍內,則認為它是為長整型。可以將它賦值給一個longint型變量。2.3整型數據2.3.5整型常量的類型

(3)在一個整常量后面加一個字母l或L,則認為是longint型常量,例如123l、432L、0L等,這往往用于函數調用中。如果函數的形參為longint型,則要求實參也為longint型。

(4)一個整常量后面加一個字母u或U,認為是unsignedint型,如12345u在內存中按unsignedint規定的方式存放(存儲單元中最高位不作為符號位,而用來存儲數據)。

2.4浮點型數據

浮點型常量的表示形式兩種表示形式十進制小數指數0.1233e-3注意:字母e(或E)之前必須有數字,且e后面的指數必須為整數1e3、1.8e-3、-123e-6、-.1e-3e3、、.e3、e

2.4浮點型數據

浮點型常量的表示形式

規范化的指數形式:

在字母e(或E)之前的小數部分中,小數點左邊應有一位(且只能有一位)非零的數字.

例如:123.456可以表示為:

123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e

其中的1.23456e3稱為“規范化的指數形式”。類型位數數的范圍有效數字float32

10-38~10386~7位double型64

10-308~1030815~16位longdouble12810-4932~10493218~19位

2.4浮點型數據2.4.2浮點型變量

1)浮點型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。

2.4浮點型數據

2.4.2浮點型變量

2)浮點型數據在內存中的存放形式:一個浮點型數據一般在內存中占4個字節(32位)。與整型數據的存儲方式不同,浮點型數據是按照指數形式存儲的。系統把一個浮點型數據分成小數部分和指數部分,分別存放。指數部分采用規范化的指數形式。3)浮點型數據的舍入誤差:由于浮點型變量是由有限的存儲單元組成的,因此能提供的有效數字總是有限的。在有效位以外的數字將被舍去。由此可能會產生一些誤差

例2.4浮點型數據的舍入誤差

#include<stdio.h>

voidmain()

{floata,b;

a=123456.789e5;

b=a+20;

printf(“%f\n”,b);

}說明:一個浮點型變量只能保證的有效數字是7位有效數字,后面的數字是無意義的,并不準確地表示該數。應當避免將一個很大的數和一個很小的數直接相加或相減,否則就會“丟失”小的數運行結果:123456.789e52.4浮點型數據

2.4.2浮點型變量

2.4浮點型數據2.4.3浮點型常量的類型

C編譯系統將浮點型常量作為雙精度來處理。

例如:f=2.45678*4523.65

系統先把2.45678和4523.65作為雙精度數,然后進行相乘的運算,得到的乘也是一個雙精度數。如果把一個浮點型常量賦給一個單精度變量f系統給出警告,警告不影響連接和運行最后結果.但只取其結果前7位賦給浮點型變量f。如是在數的后面加字母f或F(如1.65f,654.87F),編譯系統就會把它們按單精度處理。

2.5字符型數據

2.5.1字符常量(1)用單引號包含的一個字符是字符型常量(2)只能包含一個字符例‘a’,’A’,‘1’‘abc’、“a”

2.5字符型數據

2.5.1字符常量

有些以“\”開頭的特殊字符稱為轉義字符

含義ASCII代碼\n換行,將當前位置移到下一行開頭10\t水平制表(跳到下一個Tab位置)9\b退格,將當前位置移到前一列8\r回車,將當前位置移到本行開頭13\f換頁,將當前位置移到下頁開頭12\a發出鈴聲7\\代表一個反斜杠字符“\”92\′代表一個單撇號字符39\″代表一個雙撇號字符34\ddd1到3位八進制數所代表的字符\xhh1到2位十六進制數所代表的字符例2.5轉義字符的使用

#include<stdio.h>

voidmain()

{printf(″abc\tde\rf\tg\n″);

printf(″h\ti\b\bjk\n″);

打印機上的顯示結果:

fabcgdehjik顯示屏上的運行結果:

fgde

hjk2.5字符型數據

字符變量字符型變量用來存放字符常量,注意只能放一個字符。字符變量的定義形式如下:charc1,c2;在本函數中可以用下面語句對c1,c2賦值:

c1=‘a’;c2=‘b’

;一個字符變量在內存中占一個字節。

2.5字符型數據2.5.3字符數據在內存中的存儲形式及其使用方法一個字符常量存放到一個字符變量中,實際上并不是把該字符的字型放到內存中去,而是將該字符的相應的ASCII代碼放到存儲單元中。這樣使字符型數據和整型數據之間可以通用。注意:

一個字符數據既可以以字符形式輸,也可以以整數形式輸出以字符形式輸出時,系統先將存儲單元中的ASCII碼轉換成相應字符,然后輸出。以整數形式輸出時,直接將ASCII碼作為整數輸出。也可以對字符數據進行算術運算,此時相當于對它們的ASCII碼進行算術運算。

例2.6向字符變量賦予整數。

#include<stdio.h>

voidmain()

{charc1,c2;

c1=97;

c2=98;

printf(“%c%c\n”,c1,c2);

printf(“%d%d\n”,c1,c2);

說明:在第4和第5行中,將整數97和98分別賦給c1和c2,它的作用相當于以下兩個賦值語句:

c1=′a′;c2=′b′;

因為’a’和’b’的ASCII碼為97和98運行結果:ab

9798例2.7大小寫字母的轉換

#include<stdio.h>

voidmain()

{charc1,c2;

c1=’a’;

c2=’b’;

c1=c1-32;

c2=c2-32;

printf(“%c%c″,c1,c2);

}說明:程序的作用是將兩個小寫字母a和b轉換成大寫字母A和B。從ASCII代碼表中可以看到每一個小寫字母比它相應的大寫字母的ASCII碼大32。C語言允許字符數據與整數直接進行算術運算。運行結果:AB

2.5字符型數據

2.5.3字符數據在內存中的存儲形式及其使用方法說明:有些系統(如TurboC,VC++)將字符變量定義為signedchar型。其存儲單元中的最高位作為符號位,它的取值范圍是-128~127。如果在字符變量中存放一個ASCII碼為0~127間的字符,由于字節中最高位為0,因此用%d輸出字符變量時,輸出的是一個正整數。如果在字符變量中存放一個ASCII碼為128~255間的字符,由于在字節中最高位為1,用%d格式符輸出時,就會得到一個負整數。

2.5字符型數據2.5.4字符串常量字符串常量是一對雙撇號括起來的字符序列.合法的字符串常量:

“Howdoyoudo.”,“CHINA”,“a”

,“$123.45”可以輸出一個字符串,如

printf(“Howdoyoudo.”);2.5字符型數據

2.5.4字符串常量

‘a’是字符常量,“a”是字符串常量,二者不同。

如:假設C被指定為字符變量

:charcc=‘a’;

c=“a”

;c=“CHINA”;

結論:不能把一個字符串常量賦給一個字符變量。C規定:在每一個字符串常量的結尾加一個“字符串結束標志”,以便系統據此判斷字符串是否結束。C規定以字符’\0’作為字符串結束標志。

如:如果有一個字符串常量”CHINA”,實際上在內存中是:CHINA\0

它占內存單元不是5個字符,而是6個字符,最后一個字符為’\0’。但在輸出時不輸出’\0’。2.5字符型數據

2.5.4字符串常量

2.6各類數值型數據間的混合運算

混合運算:整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同類型的數據要先轉換成同一類型,然后進行運算.說明:這種類型轉換是由系統自動進行的。

2.7算術運算符和算術表達式

2.7.1C運算符和C算術表達式簡介

1.C語言的運算符有以下幾類:⑴算術運算符(+-*/%)⑵關系運算符(><==>=<=!=)⑶邏輯運算符(!&&||)⑷位運算符(<<>>~|∧&)⑸賦值運算符(=及其擴展賦值運算符)⑹條件運算符(?:)⑺逗號運算符(,)

2.7算術運算符和算術表達式

2.7.1C語言運算符和C算術表達式簡介(8)指針運算符(*和&)(9)求字節數運算符(sizeof)(10)強制類型轉換運算符((類型))(11)分量運算符(.->)(12)下標運算符([])(13)其他(如函數調用運算符())2.7算術運算符和算術表達式

2.7.1C語言運算符和C算術表達式簡介2.C語言的表達式有以下幾類:(1)算術表達式:如2+6.7*3.5+sin(0.5)(2)關系表達式:如x>0,y<z+6(3)邏輯表達式:x>0&&y>0(表示x>0與y>0同時成立,&&是邏輯運算符,代表“與”)(4)賦值表達式:如a=5.6(5)逗號表達式:如a=3,y=4,z=8

2.7算術運算符和算術表達式

2.7.2算術運算符和算術表達式

1.基本的算術運算符:+(加法運算符,或正值運算符。如:3+5、+3)-(減法運算符,或負值運算符。如:5-2、-3)*(乘法運算符。如:3*5)/(除法運算符。兩個整數相除的結果為整數兩個整數相除的結果為整數,如:5/3結果為1)%(模運算符,或稱求余運算符,%兩側均應為整型數據,如:7%4的值為3)。

2.7算術運算符和算術表達式

2.7.2算術運算符和算術表達式

2.算術表達式和運算符的優先級與結合性

用算術運算符和括號將運算對象(也稱操作數)連接起來的、符合C語法規則的式子,稱為C算術表達式。運算對象包括常量、變量、函數等。

例如:

a*b/c-1.5+′a′

是一個合法的表達式2.7.2算術運算符和算術表達式C語言規定了運算符的優先級和結合性。在表達式求值時,先按運算符的優先級別高低次序執行,例如先乘除后加減。

C規定了各種運算符的結合方向(結合性)

算術運算符的結合方向為“自左至右”,即先左后右。

2.7算術運算符和算術表達式

2.7算術運算符和算術表達式2.7.2算術運算符和算術表達式

3.強制類型轉換運算符

可以利用強制類型轉換運算符將一個表達式轉換

溫馨提示

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

評論

0/150

提交評論