數據類型運算符與表達式_第1頁
數據類型運算符與表達式_第2頁
數據類型運算符與表達式_第3頁
數據類型運算符與表達式_第4頁
數據類型運算符與表達式_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數據類型運算符與表達式第1頁,共45頁,2023年,2月20日,星期五&a=2000H22001H&b=2002H1.23452003H2004H2005H舉例。若有變量定義inta=2;floatb=1.2345;則變量a、b在內存中的存儲情況如圖示?!?”表示取地址。第2頁,共45頁,2023年,2月20日,星期五3.2常量與變量一、常量整型常量:

浮點型常量字符常量字符串常量1)整數十進制八進制十六進制

在程序運行過程中其值不能被改變的量稱為常量正負號+數字,開頭的數字不能為0數字0+(0~7)組成的數字串數字0x或0X開頭+(0~9或A~F)組成的字符串C可識別的三種進制的整數第3頁,共45頁,2023年,2月20日,星期五二、符號常量概念 符號常量是一種特殊形式的常量,即用一個標識符表示一個常量。定義形式#define常量名常量值符號常量在程序中的應用習慣:符號常量名用大寫,變量名用小寫。#definePRICE30#includevoidmain(){intnum,total; num=10; total=num*PRICE; printf(“total=%d”,total);}第4頁,共45頁,2023年,2月20日,星期五

變量的定義變量是程序執(zhí)行過程中其值可以改變的量。變量名--存儲單元--變量值袋子名--袋子位置--袋子東西變量的分類整型變量實型變量字符變量變量的命名(同標識符的命名)變量的使用先定義,后使用

三、變量關于變量第5頁,共45頁,2023年,2月20日,星期五變量與地址程序中:inti;

floatk;

內存中每個字節(jié)有一個編號-----地址…...…...2000200120022005內存02003ik編譯或函數調用時為其分配內存單元變量是對程序中數據存儲空間的抽象“直接訪問”方式:變量名存儲單元變量值袋子名袋子位置袋子東西第6頁,共45頁,2023年,2月20日,星期五

5.標識符預定義標識符

有特定含義的標識符,也可用于其他用途。用戶標識符

進行程序設計時用戶自己命名的標識符。包括常量、變量、函數名、語句標號、類型定義符等。標識符是由英文字母、數字及下劃線構成的字符串,并且首字符必須為字母或下劃線。簡單的說,標識就是一個名字。建議:變量名的長度不要超過8個字符第7頁,共45頁,2023年,2月20日,星期五.變量“先定義,后使用”,每個變量被指定為一個確定類型,在編譯時就能為其分配相應的存儲空間。注:沒有字符串變量,用字符數組存放第8頁,共45頁,2023年,2月20日,星期五3.3整型數據1.整型常量

十進制數如:12、345、0八進制數(以0開頭)如:012、045十六進制數(0x開頭)如:0x12、0x345整型常量舉例2.整型變量的分類基本型(int)短整型(shortint、short)長整型(longint、long)無符號型無符號整型(unsignedint)無符號短整型(unsignedshort)無符號長整型(unsignedlong)整型變量定義第9頁,共45頁,2023年,2月20日,星期五3、整數數據在內存中的存放方式如:inti;i=10;10i0000000000001010i在內存中實際存儲的情況示意圖第10頁,共45頁,2023年,2月20日,星期五4.整型變量定義整型變量的定義形式: 數值類型變量名表;說明:數值類型即int、short、long等。變量名表可為一個或多個變量名。變量被定義后,其取值范圍也被確定。注意事項main(){inta,b,c;a=4;b=5;c=a*b;printf(“a*b=%d\n”,c);}等價于:inta;intb;intc;第11頁,共45頁,2023年,2月20日,星期五5.使用整型數據時的注意事項:

若某系統的C版本確定shortint與int型數據在內存中占據的長度相同,則二者等價。一個int型常量(-32768~+32767)可以賦值給int型變量或long型變量。長整型數的表示方法是在數值后面加字母l或L,如234l,-12323L。不同的數據類型有不同的存儲字長,使用時注意其取值范圍。注:整型數據的溢出、整型常量的類型的討論暫不要求第12頁,共45頁,2023年,2月20日,星期五3.4實型數據實型常量什么是實型常量 即浮點數。以十進制形式表示。實型常量的表示形式小數形式指數形式(科學計數法)使用數值常量時的注意事項實型變量單精度實型(float)雙精度實型(double)長雙精度實型(longdouble)第13頁,共45頁,2023年,2月20日,星期五實型常量的指數形式表示:

小數E(或e)整數說明:“小數”表示實數的數值位,即尾數部分。“E”代表十進制數的基數10?!罢麛怠北硎?0的乘冪。實型常量的指數形式表示法舉例:1.23×1033.918e-21.23E33.918×10-2注意:字母E之前必須有數字!第14頁,共45頁,2023年,2月20日,星期五使用數值常量時的注意事項數值常量內不能有逗號、空格或其他非法字符。數值常量的值不得超過C語言規(guī)定的取值范圍,否則會產生溢出。相同數值的常量可以在寫法上區(qū)別它的類型。注:在使用實型數據進行運算時可能會產生一些舍入誤差第15頁,共45頁,2023年,2月20日,星期五3.5字符型數據一、字符常量概念:指用撇號(單引號)括起來的單個字符。字符常量的分類一般字符常量轉義字符常量以一個反斜杠“\”開頭的字符序列,有特定含義。第16頁,共45頁,2023年,2月20日,星期五轉義字符常量表字符形式功能\b退格(Backspace)\t橫向跳格\v豎向跳格\n換行\(zhòng)r回車不換行\(zhòng)f換頁\\表示反斜杠\\‘表示‘

(單引號)\ddd用三位八進制數表任意字符(ASCII值)\xhh用兩位十六進制數表示任意字符(ASCII值)常用的轉義字符第17頁,共45頁,2023年,2月20日,星期五轉義字符的使用main(){printf(“abcd\tg\n”);printf(“Itis\notagoodexample.\n”);}舉例:程序執(zhí)行結果abcdgItisotagoodexample.第18頁,共45頁,2023年,2月20日,星期五二、字符變量關于字符變量字符變量用來存放字符常量。一個字符變量只能存放一個字符常量。一個字符型變量在內存中占用一個字節(jié)的空間。字符變量的定義格式:

char變量名表;字符變量的賦值: 變量名=字符常量;舉例:charc;charch1,ch2;c=‘a’;ch1=‘b’;ch2=‘c’;第19頁,共45頁,2023年,2月20日,星期五三、字符數據的存儲及使用

數據在計算機中以二進制形式存放。字符數據在內存單元中存放的是其對應的ASCII碼,且一個字符占用一個字節(jié)。C語言中允許字符常量像整型數據一樣參與相關運算。程序中的應用范例。字符十進制數二進制數‘A’6501000001‘B’6601000010………

…‘Z’9601100000‘a’9701100001‘b’9801100010………

…‘Z’12810000000部分字符ASCII表第20頁,共45頁,2023年,2月20日,星期五例題main(){charch1,ch2;ch1=‘A’;ch2=ch1+32;printf(“%c\n”,ch2);}main(){charc;inti;c=97;i=‘A’;printf(“%c%d\n”,c,c);printf(“%c%d\n”,i,i);}1、大小寫字符的相互轉換。2、字符數據與整型數據通用。第21頁,共45頁,2023年,2月20日,星期五四、字符串常量

概念:字符串常量是指用一對雙引號括起來的字符序列。如“Hello”、“good”等。字符串常量的存儲:系統自動在字符串的末尾加上一個字符串結束標記‘\0’,以此判斷字符串是否結束。程序中長度為n個字符的字符串常量,在內存中需要用n+1個字節(jié)空間來存儲它。舉例:字符串“string”的存儲。string\01151161141051101030第22頁,共45頁,2023年,2月20日,星期五字符常量與字符串常量的區(qū)別二者表示形式不同。字符常量的定界符是‘’,而字符串常量的定界符是“”。如:‘a’是字符常量,而“a”是字符串常量。存儲空間不同。一個字符常量只占1個字節(jié),而一個含有單個字符的字符串常量需要占用2個字節(jié)。如:‘a’在內存中只占1個字節(jié),“a”則需占用2個字節(jié)空間。不允許將一個字符串常量賦給一個字符型變量。如:ch=‘a’;是正確的,而ch=“a”;不是將字符a賦值給變量ch。第23頁,共45頁,2023年,2月20日,星期五3.6變量的初始化變量賦初值C語言允許在定義變量時對變量進行初始化,即對變量賦初值。 如:inta=2;等價于inta;a=2;對變量進行初始化,允許只對定義的變量的一部分賦初值。 如:inta,b,c=25; charch1=‘x’,ch2;C語言中若有幾個變量初值相同,必須分別賦值。 如:inta=2,b=2,c=2;對字符型變量初始化時,既可以將字符用單引號括起來直接賦值,也可以使用該字符的ASCII碼進行賦值。 如:charch=‘A’;等價于charch=65;第24頁,共45頁,2023年,2月20日,星期五基本數據類型類型符號關鍵字數的表示范圍所占位數整型字符型實型有無(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsigned

int0~65535320~4294967295unsigned

longunsigned

short160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無unsignedchar80~255語言程序設計

第三章C第25頁,共45頁,2023年,2月20日,星期五3.7各類數值型數據間的混合運算不同類型數據間的轉換隱式轉換顯式轉換1.隱式轉換運算轉換賦值轉換輸出轉換函數調用轉換運算轉換規(guī)則:不同類型數據運算時先自動轉換成同一類型在不同類型數據混合運算時在把一個值賦給與其類型不同的變量時輸出時轉換成指定的輸出格式實參與形參類型不一致時轉換第26頁,共45頁,2023年,2月20日,星期五doublefloatlongunsignedintchar,short低高說明:必定的轉換運算對象類型不同時轉換第27頁,共45頁,2023年,2月20日,星期五2.顯式轉換(強制轉換)一般形式:(類型名)(表達式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6說明:強制轉換得到所需類型的中間變量,原變量類型不變例main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結果:x=3.600000,i=3較高類型向較低類型轉換時可能發(fā)生精度損失問題第28頁,共45頁,2023年,2月20日,星期五C運算符算術運算符:(+-*/%++--)關系運算符:(<<===>>=!=)邏輯運算符:((!&&||)位運算符:(<<>>~|^&)賦值運算符:(=及其擴展)條件運算符:(?:)逗號運算符:(,)指針運算符:(*&)求字節(jié)數:(sizeof)強制類型轉換:(類型)分量運算符:(.->)下標運算符:([])其它:(()-)3.8算術運算符和算術表達式一.C運算符簡介學習運算符應注意:1.運算符功能2.與運算量關系要求運算量個數要求運算量類型3.運算符優(yōu)先級別4.結合方向5.結果的類型第29頁,共45頁,2023年,2月20日,星期五二、算術運算符和算術表達式1.基本的算術運算符

+、-、*、/、%

/:兩個整數相除的結果為整數。若操作數中有一個負數,則采用“向零取整”的方法。5/3=1;-5/3=-1;兩邊有一個小數結果為小數.-5/2.0=-2.5

%:模運算符,或稱求余運算符。其操作數均應為整數。特別說明:當參加求余運算的2個操作數中有一個為負數時,其結果的符號與第一個數的符號相同。

5%3=2;-5%3=-2;5%(-3)=2;-5%(-3)=-2;第30頁,共45頁,2023年,2月20日,星期五例5%2=1

-5%2=-11%10=

1

5%1=

05.5%2()第31頁,共45頁,2023年,2月20日,星期五2.算術表達式與運算符的優(yōu)先級與結合性1)算術表達式:用算術運算符和括號將運算對象連接起來的,符合C語法規(guī)則的式子,稱為C的算數表達式。2)優(yōu)先級:先乘除,后加減,例如:a+b*c3)結合性:自左至右,即當一個運算對象兩側的運算符的優(yōu)先級別相同時,運算對象先與左面的運算符結合,例如:a-b+c第32頁,共45頁,2023年,2月20日,星期五3.強制類型轉換運算符1)利用強制類型轉換運算符可以將一個表達式轉換成所需要的類型。其通用形式為

(類型名)(表達式)

例如:(double)a、(int)(x+y)、float(5%3)2)注意事項:表達式應用括號括起來在對變量進行強制類型轉換時,將得到一個中間結果,該變量的類型保持不變當自動類型轉換不能滿足要求時,需要采用強制類型轉換第33頁,共45頁,2023年,2月20日,星期五4.自增、自減運算符1)作用:使變量的值增1或減1,具體描述如下:++i、--i(在使用i之前,先使i的值加1或減1)

i++、i--(在使用i之后,再使i的值加1或減1)例如,當i=5時,

k=++i;相當于i=i+1;k=i;則k的值為6,i的值為6。

k=i--;相當于k=i;i=i-1;則k的值為5,i的值為4。注意:(1)++和--只能用于變量,而不能用于常量或表達式。(2)++和--的結合方向為“自右向左”。

第34頁,共45頁,2023年,2月20日,星期五例1j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;例2-i++i=3;printf(“%d”,-i++);第35頁,共45頁,2023年,2月20日,星期五例3-i++-(i++)i=3;printf(“%d”,-i++);//-3

例4j+++k;(j++)+k;第36頁,共45頁,2023年,2月20日,星期五3.9賦值運算符和賦值表達式一、賦值運算符:“=”二、類型轉換:當賦值運算符兩側的類型不一致時,需要進行類型轉換。1.將實型數據(單、雙精度)賦給整型變量時,舍棄實數的小數部分。如:intk=3.78;則k的值為3。2.將整型數據賦值給單、雙精度變量時,數值不變,但以浮點數的形式存儲到變量中。如:

floatf=10;則f存儲的數據為10.00000、

doublef=10;則f存儲的數據為10.00000000000000第37頁,共45頁,2023年,2月20日,星期五3.將一個雙精度型數據賦值給單精度變量時,截取其前7位有效數字,存儲到單精度變量中。注意:數據表示的范圍不能溢出。4.字符型數據賦值給整型變量時,有兩種情況:

1)如果系統將字符處理為無符號的量,則直接將字符的8位數值放到整型變量的低8位中,并且高8位補0。

2)如果系統將字符處理為帶符號的量,則當字符的最高位為0時,則整型變量的高8位補0;若字符的最高位為1,則整型變量的高8位補1。該方法稱為“符號擴展”,其目的是為了保持數據的值不變。第38頁,共45頁,2023年,2月20日,星期五5.將一個int、short、long型數據賦值給一個字符型變量時,則只將其低8位原樣存放到字符變量中。6.將帶符號的int數據賦值給long型變量時,要進行符號擴展。反之,若將一個long型數據賦值給一個int型變量時,則只將其低16位原樣存放到int變量中。7.將unsignedint數據賦給longint變量時,只需高8位補0即可。當將一個unsigned整型數據賦值給一個與其長度相同的整型變量時,可將unsigned整型數據原樣存放到整型變量中,但應注意數據范圍超界。第39頁,共45頁,2023年,2月20日,星期五三、復合的賦值運算符在賦值運算符“=”之前加上一個其他的二元運算符,可以構成一個復合的運算符。例如:a+=b;等價于a=a+b;

x*=y+8;等價于x=x*(y+8);2.作用:1)簡化程序

2)提高編譯效率第40頁,共45頁,2023年,2月20日,星期五例2inta=2;

a+=a-=a*=3;

溫馨提示

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

評論

0/150

提交評論