![《程序設(shè)計(jì)基礎(chǔ):C語言》4ppt課件_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/8/1cef1d45-1cca-4040-bddb-93257c448f36/1cef1d45-1cca-4040-bddb-93257c448f361.gif)
![《程序設(shè)計(jì)基礎(chǔ):C語言》4ppt課件_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/8/1cef1d45-1cca-4040-bddb-93257c448f36/1cef1d45-1cca-4040-bddb-93257c448f362.gif)
![《程序設(shè)計(jì)基礎(chǔ):C語言》4ppt課件_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/8/1cef1d45-1cca-4040-bddb-93257c448f36/1cef1d45-1cca-4040-bddb-93257c448f363.gif)
![《程序設(shè)計(jì)基礎(chǔ):C語言》4ppt課件_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/8/1cef1d45-1cca-4040-bddb-93257c448f36/1cef1d45-1cca-4040-bddb-93257c448f364.gif)
![《程序設(shè)計(jì)基礎(chǔ):C語言》4ppt課件_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/8/1cef1d45-1cca-4040-bddb-93257c448f36/1cef1d45-1cca-4040-bddb-93257c448f365.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2021/20212021/2021第二學(xué)期第二學(xué)期C C言語課程組言語課程組上一章知識(shí)復(fù)習(xí)上一章知識(shí)復(fù)習(xí)v講述了實(shí)踐問題向計(jì)算機(jī)程序轉(zhuǎn)化的過程。講述了實(shí)踐問題向計(jì)算機(jī)程序轉(zhuǎn)化的過程。v講述了數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的存儲(chǔ)方式。講述了數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的存儲(chǔ)方式。v講述了數(shù)據(jù)類型的種類和區(qū)別。講述了數(shù)據(jù)類型的種類和區(qū)別。v講述了變量的聲明和命名規(guī)那么。講述了變量的聲明和命名規(guī)那么。v講述了常量和字面值的區(qū)別。重點(diǎn)了解字面值是講述了常量和字面值的區(qū)別。重點(diǎn)了解字面值是有類型的。有類型的。v講述了輸入及輸出函數(shù)的用法。講述了輸入及輸出函數(shù)的用法。本講教學(xué)目的本講教學(xué)目的v了解左值及右值。了解左值及右值。v掌
2、握運(yùn)算符的種類、重點(diǎn)掌握運(yùn)算符優(yōu)先級(jí)。掌握運(yùn)算符的種類、重點(diǎn)掌握運(yùn)算符優(yōu)先級(jí)。v熟習(xí)各種運(yùn)算符的功能及相關(guān)表達(dá)式的求值方法。熟習(xí)各種運(yùn)算符的功能及相關(guān)表達(dá)式的求值方法。v了解了解sizeof運(yùn)算符。運(yùn)算符。v了解表達(dá)式副作用。了解表達(dá)式副作用。v掌握顯式類型轉(zhuǎn)換的方法,了解隱式轉(zhuǎn)換。掌握顯式類型轉(zhuǎn)換的方法,了解隱式轉(zhuǎn)換。v掌握溢出的計(jì)算方法,了解在什么情況下能夠會(huì)掌握溢出的計(jì)算方法,了解在什么情況下能夠會(huì)呵斥溢出。呵斥溢出。本章授課內(nèi)容本章授課內(nèi)容內(nèi)存溢出內(nèi)存溢出類型轉(zhuǎn)換類型轉(zhuǎn)換運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式左值和右值左值和右值C程序的語法程序的語法本章授課內(nèi)容本章授課內(nèi)容內(nèi)存溢出內(nèi)存溢出類型轉(zhuǎn)
3、換類型轉(zhuǎn)換運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式左值和右值左值和右值C程序的語法程序的語法C言語的言語的“單詞單詞v規(guī)范定義了多種類型的單詞:規(guī)范定義了多種類型的單詞:v關(guān)鍵詞關(guān)鍵詞(keywords):return、for、void、v標(biāo)識(shí)符標(biāo)識(shí)符(identifiers):x、y、z、v字面值字面值(literal):3、4、“Hello World!、v注釋注釋(comment):/*This is a comment.*/、v操作符操作符(operator):+、-、*、/、v分隔符分隔符(separator):、vC言語的運(yùn)算言語的運(yùn)算23 + 34算式運(yùn)算符號(hào)表達(dá)式運(yùn)算符由單個(gè)或多個(gè)操作數(shù)、
4、運(yùn)算符組成的符合C言語規(guī)那么的式子叫做表達(dá)式。表達(dá)式的值就是經(jīng)過計(jì)算以后所得到的值。從語法的角度看源文件從語法的角度看源文件/*源文件:源文件:demo.c*/#include int main(void) int x = 23; int y = 34; int z = x + y; printf(“C籃子中的蘋果數(shù)量為籃子中的蘋果數(shù)量為%dn“,z); system(“PAUSE); return 0;對(duì)于運(yùn)算的含義就是我們接下來要學(xué)習(xí)和掌握的。對(duì)于運(yùn)算的含義就是我們接下來要學(xué)習(xí)和掌握的。本章授課內(nèi)容本章授課內(nèi)容內(nèi)存溢出內(nèi)存溢出類型轉(zhuǎn)換類型轉(zhuǎn)換運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式左值和右值左值和右值
5、C程序的語法程序的語法左值和右值左值和右值左值:左值:指的是援用對(duì)象指的是援用對(duì)象的一種特殊表達(dá)的一種特殊表達(dá)式,該表達(dá)式可式,該表達(dá)式可以訪問或改動(dòng)對(duì)以訪問或改動(dòng)對(duì)象。象。操作符操作符右值右值非左值表達(dá)式。非左值表達(dá)式。區(qū)別左值和右值區(qū)別左值和右值v例例4-1 左值及右值舉例。左值及右值舉例。左值右值總結(jié)左值右值總結(jié)v可以作為左值的表達(dá)式方式有:變量名、可以作為左值的表達(dá)式方式有:變量名、ek、(e)、、e-name、*e。v有些運(yùn)算符要求某個(gè)操作數(shù)必需為左值,這樣的有些運(yùn)算符要求某個(gè)操作數(shù)必需為左值,這樣的運(yùn)算符有:運(yùn)算符有:v&:操作數(shù)應(yīng)為左值或函數(shù)名。:操作數(shù)應(yīng)為左
6、值或函數(shù)名。v+、-:操作數(shù)應(yīng)為左值。:操作數(shù)應(yīng)為左值。v=、+=、-=、*=、/=、%=、=、&=、=、|=:左操作數(shù)應(yīng)為左值。:左操作數(shù)應(yīng)為左值??偨Y(jié):可以出如今等號(hào)左側(cè)的值都是左值總結(jié):可以出如今等號(hào)左側(cè)的值都是左值. .本章授課內(nèi)容本章授課內(nèi)容內(nèi)存溢出內(nèi)存溢出類型轉(zhuǎn)換類型轉(zhuǎn)換運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式左值和右值左值和右值C程序的語法程序的語法C C言語中的運(yùn)算符言語中的運(yùn)算符(I)(I)vC言語運(yùn)算符可分為以下幾類:言語運(yùn)算符可分為以下幾類:v算數(shù)運(yùn)算符:加算數(shù)運(yùn)算符:加(+)、減、減(-)、乘、乘(*)、除、除(/)、求余或稱模運(yùn)算求余或稱模運(yùn)算(%)、自增、自增(+)、自
7、減、自減(-)v關(guān)系運(yùn)算符:包括大于關(guān)系運(yùn)算符:包括大于()、小于、小于(=)、小于等于、小于等于(=,=)C C言語中的運(yùn)算符言語中的運(yùn)算符(II)(II) 條件運(yùn)算符: (?:).這是獨(dú)一一個(gè)三目運(yùn)算符。 位運(yùn)算符:與(&)、位或(|)、位非()、位異或()、左移() 逗號(hào)運(yùn)算符: (,) 指針運(yùn)算符: (*)和 (&) 。 求字節(jié)數(shù)運(yùn)算符: (sizeof)。 特殊運(yùn)算符:括號(hào)(),下標(biāo),成員(,.)C C言語中運(yùn)算符的優(yōu)先級(jí)言語中運(yùn)算符的優(yōu)先級(jí)I IC C言語中運(yùn)算符的優(yōu)先級(jí)言語中運(yùn)算符的優(yōu)先級(jí)IIII算數(shù)運(yùn)算符算數(shù)運(yùn)算符v復(fù)習(xí):加復(fù)習(xí):加(+)、減、減(-)、乘、乘(
8、*)、除、除(/)、求余或、求余或稱模運(yùn)算稱模運(yùn)算(%)v加法運(yùn)算符加法運(yùn)算符“+為二元運(yùn)算符,即應(yīng)有兩個(gè)操為二元運(yùn)算符,即應(yīng)有兩個(gè)操作數(shù)參與加法運(yùn)算,其相應(yīng)的表達(dá)式方式為:作數(shù)參與加法運(yùn)算,其相應(yīng)的表達(dá)式方式為:操作數(shù)操作數(shù)1 + 操作數(shù)操作數(shù)2。v操作數(shù)操作數(shù)1 - 操作數(shù)操作數(shù)2v操作數(shù)操作數(shù)1 * 操作數(shù)操作數(shù)2v操作數(shù)操作數(shù)1 / 操作數(shù)操作數(shù)2v操作數(shù)操作數(shù)1 % 操作數(shù)操作數(shù)2例4-3 設(shè)有int x = 4, y; 請(qǐng)分析語句y = x*5+4;執(zhí)行完后,y 的值是多少?例4-4 設(shè)有int x = 4, z = 5, y; 請(qǐng)分析語句y = z + x*(9 z) ;執(zhí)行完后
9、,y 的值是多少?例4-7 設(shè)有int x = 4, y = 3, z; 請(qǐng)分析語句z = x%y;執(zhí)行完后,z 的值是多少?例4-8 設(shè)有int x = 4, y = 3; double z1, z2;請(qǐng)分析語句z1 = x / y;,z2 = x % y;執(zhí)行完后,z1 和z2 的值是多少?留意:對(duì)于留意:對(duì)于% %來說,結(jié)果的符號(hào)同被取余數(shù)一樣來說,結(jié)果的符號(hào)同被取余數(shù)一樣而且兩個(gè)操作數(shù)必需為整數(shù)而且兩個(gè)操作數(shù)必需為整數(shù). .算數(shù)運(yùn)算符算數(shù)運(yùn)算符v自增運(yùn)算符自增運(yùn)算符(+):一元運(yùn)算符,操作方式有兩種:一元運(yùn)算符,操作方式有兩種:v+操作數(shù)操作數(shù)操作數(shù)提供計(jì)算值前,先使其值自動(dòng)操作數(shù)提供
10、計(jì)算值前,先使其值自動(dòng)加加1v操作數(shù)操作數(shù)+操作數(shù)提供計(jì)算值后,再使其值自動(dòng)操作數(shù)提供計(jì)算值后,再使其值自動(dòng)加加1v自減運(yùn)算符自減運(yùn)算符(-):一元運(yùn)算符,操作方式有兩種:一元運(yùn)算符,操作方式有兩種:v-操作數(shù)操作數(shù)操作數(shù)提供計(jì)算值前,先使其值自動(dòng)操作數(shù)提供計(jì)算值前,先使其值自動(dòng)減減1v操作數(shù)操作數(shù)-操作數(shù)提供計(jì)算值后,再使其值自動(dòng)操作數(shù)提供計(jì)算值后,再使其值自動(dòng)減減1例4-12 設(shè)有int x = 3, y;,請(qǐng)分析語句y = +x;執(zhí)行后,x、y 的值?例4-13 設(shè)有int x = 3, y = 4, z;,請(qǐng)分析語句z = x+ + y;執(zhí)行后,x、y、z 的值?例4-16 設(shè)有int
11、 x = 3, y = 4, z;,請(qǐng)分析語句z = x+ + -y;執(zhí)行后,x、y、z 的值?算數(shù)運(yùn)算符算數(shù)運(yùn)算符v總結(jié):總結(jié):v+、-運(yùn)算符的操作數(shù)必需是左值運(yùn)算符的操作數(shù)必需是左值v+運(yùn)算符和運(yùn)算符運(yùn)算符和運(yùn)算符+的運(yùn)用規(guī)范同理的運(yùn)用規(guī)范同理-v+、-運(yùn)算符的副作用運(yùn)算符的副作用va=c+b+c+;a?vc=(i+)+(i+);c ?vprintf(“%dt%dn,i,i+);結(jié)果?結(jié)果?留意:留意:1.1.盡量分多行寫盡量分多行寫. .2.2.盡量運(yùn)用多運(yùn)用盡量運(yùn)用多運(yùn)用. .3.3.盡量不要再一行語句中對(duì)一個(gè)變量多次盡量不要再一行語句中對(duì)一個(gè)變量多次運(yùn)用自增自減運(yùn)用自增自減. .運(yùn)算
12、符和表達(dá)式總結(jié)運(yùn)算符和表達(dá)式總結(jié)v例例4-40,求代碼結(jié)果。,求代碼結(jié)果。/*源文件:demo4_4.c*/#include #include int main(void) int x = 3; int a; a = +x + +x + +x; printf(a = %d, a); system(PAUSE); return 0;運(yùn)算符和表達(dá)式總結(jié)運(yùn)算符和表達(dá)式總結(jié)v例例4-41,求代碼結(jié)果。,求代碼結(jié)果。/*源文件:demo4_5.c*/#include #include int main(void) int x = 3; int a; +x; +x; +x; a = x + x + x;
13、printf(a = %dn, a); system(PAUSE); return 0;運(yùn)算符和表達(dá)式總結(jié)補(bǔ)運(yùn)算符和表達(dá)式總結(jié)補(bǔ)v對(duì)于一個(gè)表達(dá)式而言,能夠會(huì)產(chǎn)生副作用。所以對(duì)于一個(gè)表達(dá)式而言,能夠會(huì)產(chǎn)生副作用。所以表達(dá)式可分為無副作用的和有副作用的。表達(dá)式可分為無副作用的和有副作用的。v序列點(diǎn)被定義為程序執(zhí)行過程中的這樣一個(gè)點(diǎn):序列點(diǎn)被定義為程序執(zhí)行過程中的這樣一個(gè)點(diǎn):該點(diǎn)前的表達(dá)式的一切副作用,在程序執(zhí)行到達(dá)該點(diǎn)前的表達(dá)式的一切副作用,在程序執(zhí)行到達(dá)該點(diǎn)之前發(fā)生終了;該點(diǎn)后的表達(dá)式的一切副作該點(diǎn)之前發(fā)生終了;該點(diǎn)后的表達(dá)式的一切副作用,在程序執(zhí)行到該點(diǎn)時(shí)髦未發(fā)生。用,在程序執(zhí)行到該點(diǎn)時(shí)髦未發(fā)
14、生。v序列點(diǎn)出現(xiàn)的位置序列點(diǎn)出現(xiàn)的位置v完好表達(dá)式終了時(shí)完好表達(dá)式終了時(shí)v&、|、?:或逗號(hào)運(yùn)算符的第一個(gè)操作數(shù)之后或逗號(hào)運(yùn)算符的第一個(gè)操作數(shù)之后v函數(shù)調(diào)用中求值參數(shù)和函數(shù)表達(dá)式之后函數(shù)調(diào)用中求值參數(shù)和函數(shù)表達(dá)式之后運(yùn)算符和表達(dá)式總結(jié)運(yùn)算符和表達(dá)式總結(jié)留意:留意:1.1.盡量不要利用表達(dá)式的副作用盡量不要利用表達(dá)式的副作用. .2.2.盡量引入中間變量,避開副作用歧義盡量引入中間變量,避開副作用歧義. .3.3.盡量盡量不要出現(xiàn)晦澀難懂盡量盡量不要出現(xiàn)晦澀難懂. .也不知道系也不知道系統(tǒng)將怎樣執(zhí)行的代碼統(tǒng)將怎樣執(zhí)行的代碼. .賦值運(yùn)算符賦值運(yùn)算符v賦值運(yùn)算符:賦值運(yùn)算符:v簡單賦值簡單
15、賦值(=)v復(fù)合算術(shù)賦值復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)v復(fù)合位運(yùn)算賦值復(fù)合位運(yùn)算賦值(&=,|=,=,=,)、小于、小于(=)、小于等于、小于等于( y;執(zhí)行后,z 的值?例4-19 設(shè)有int x = 3, y;,請(qǐng)分析y = 2 = 8;執(zhí)行后,y 的值?例4-20 設(shè)有int x = 3, y = 3, z = 5;,請(qǐng)分析表達(dá)式:x = y、x !=y、y != z、x = 3、x !=4 的計(jì)算結(jié)果?例4-21 設(shè)有int x = 3, y = 3, z;,請(qǐng)分析語句z = x = y != 4;執(zhí)行后,z 的值?問題:假設(shè)把不同類型的變量相互賦值會(huì)怎樣呢?邏輯
16、運(yùn)算符邏輯運(yùn)算符v邏輯運(yùn)算符:與邏輯運(yùn)算符:與(&)、或、或(|)、非、非(!)v非操作的普通方式:!操作數(shù)非操作的普通方式:!操作數(shù)1v對(duì)邏輯與,其簡單表達(dá)式的普通方式為:操作數(shù)對(duì)邏輯與,其簡單表達(dá)式的普通方式為:操作數(shù)1&操作數(shù)操作數(shù)2v對(duì)邏輯或,其簡單表達(dá)式的普通方式為:操作數(shù)對(duì)邏輯或,其簡單表達(dá)式的普通方式為:操作數(shù)1|操作數(shù)操作數(shù)2例4-22 設(shè)有int x = 3, y = 0, z;,請(qǐng)分析表達(dá)式x & y、x | y、!x、!y 的結(jié)果?例4-23 設(shè)有int a = 3, b = 2, c = 1, d = 5, e = 6, f;,請(qǐng)分析表達(dá)式f =
17、 a b | b c & c d| d b ? a : b;執(zhí)行后,c 的值?位運(yùn)算操作運(yùn)算符位運(yùn)算操作運(yùn)算符v位運(yùn)算符:位運(yùn)算符:v與與(&)、位或、位或(|)、位非、位非()、位異或、位異或()、左移、左移()v運(yùn)算符運(yùn)算符v普通方式:普通方式:操作數(shù)操作數(shù)v作用:將操作數(shù)的二進(jìn)制表示逐位取反。作用:將操作數(shù)的二進(jìn)制表示逐位取反。v例例4-25 設(shè)有設(shè)有int x = 0 x0FA4, y;,請(qǐng)分析,請(qǐng)分析y = x;執(zhí)行后,執(zhí)行后,y 的值?的值?位運(yùn)算操作運(yùn)算符位運(yùn)算操作運(yùn)算符v&運(yùn)算符普通方式:操作數(shù)運(yùn)算符普通方式:操作數(shù)1&操作數(shù)操作數(shù)2v對(duì)操作數(shù)對(duì)
18、操作數(shù)1和操作數(shù)和操作數(shù)2的二進(jìn)制數(shù),進(jìn)展按位求與的二進(jìn)制數(shù),進(jìn)展按位求與v|運(yùn)算符普通方式:操作數(shù)運(yùn)算符普通方式:操作數(shù)1|操作數(shù)操作數(shù)2v對(duì)操作數(shù)對(duì)操作數(shù)1和操作數(shù)和操作數(shù)2的二進(jìn)制數(shù),進(jìn)展按位求或的二進(jìn)制數(shù),進(jìn)展按位求或v運(yùn)算符普通方式:操作數(shù)運(yùn)算符普通方式:操作數(shù)1操作數(shù)操作數(shù)2v對(duì)操作數(shù)對(duì)操作數(shù)1和操作數(shù)和操作數(shù)2的二進(jìn)制數(shù),進(jìn)展按位求異的二進(jìn)制數(shù),進(jìn)展按位求異或或例4-26 設(shè)有int x = 3, y = 4, z;,請(qǐng)分析語句z = x & y;執(zhí)行后,z 的值?例4-27 設(shè)有int x = 0 xF4AB, y = 0 x1AFC, z;,請(qǐng)分析語句z = x |
19、y;執(zhí)行后,z 的值?例4-28 設(shè)有int x = 0 xF4AB, y = 0 x1AFC, z;,請(qǐng)分析語句z = x y;執(zhí)行后,z 的值?補(bǔ)充:原碼、補(bǔ)碼、反碼補(bǔ)充:原碼、補(bǔ)碼、反碼v概念:概念:v換算關(guān)系:換算關(guān)系:v反碼反碼=原碼原碼v補(bǔ)碼補(bǔ)碼=反碼反碼+1v原碼原碼=補(bǔ)碼補(bǔ)碼-1符號(hào)位不變符號(hào)位不變v例例4-35 求補(bǔ)碼求補(bǔ)碼(1111 1000)b 的原碼,最高的原碼,最高位為符號(hào)位。位為符號(hào)位。位運(yùn)算操作運(yùn)算符位運(yùn)算操作運(yùn)算符v運(yùn)算符普通方式:操作數(shù)運(yùn)算符普通方式:操作數(shù)1操作數(shù)操作數(shù)2v對(duì)操作數(shù)對(duì)操作數(shù)1的每一位都向左挪動(dòng)操作數(shù)的每一位都向左挪動(dòng)操作數(shù)2位位v留意:留意:
20、v以上操作的操作數(shù)以上操作的操作數(shù)1和操作數(shù)和操作數(shù)2應(yīng)為整數(shù)類型;應(yīng)為整數(shù)類型;v運(yùn)算數(shù)的各二進(jìn)位全部左移操作數(shù)運(yùn)算數(shù)的各二進(jìn)位全部左移操作數(shù)2指定值的位指定值的位數(shù),移到邊境之外的位被丟棄,低位補(bǔ)數(shù),移到邊境之外的位被丟棄,低位補(bǔ)0;v如操作數(shù)如操作數(shù)2是負(fù)數(shù),那么移位運(yùn)算符的結(jié)果是未是負(fù)數(shù),那么移位運(yùn)算符的結(jié)果是未定義的;定義的;v如操作數(shù)如操作數(shù)2的值大于或等于轉(zhuǎn)換后左操作數(shù)的值大于或等于轉(zhuǎn)換后左操作數(shù)1數(shù)值數(shù)值的位數(shù),那么移位運(yùn)算符的結(jié)果也是未定義的。的位數(shù),那么移位運(yùn)算符的結(jié)果也是未定義的。位運(yùn)算操作運(yùn)算符位運(yùn)算操作運(yùn)算符v例例4-29:設(shè)有:設(shè)有int x = 0 xE4AB,
21、y;,請(qǐng)分析,請(qǐng)分析語句語句y = x 3;執(zhí)行后,執(zhí)行后,x、y 的值?的值?位運(yùn)算操作運(yùn)算符位運(yùn)算操作運(yùn)算符v例例4-30 設(shè)有設(shè)有char x = a, y;,請(qǐng)分析語句,請(qǐng)分析語句y = x 4;執(zhí)行后,執(zhí)行后,y 的值?的值?v例例4-31 設(shè)有設(shè)有char x = a; int y;,請(qǐng)分,請(qǐng)分析語句析語句y = x 4;執(zhí)行后,執(zhí)行后,y 的值?的值?位運(yùn)算操作運(yùn)算符位運(yùn)算操作運(yùn)算符v例例4-34 設(shè)有設(shè)有int x = 0 xFAFF; char y;請(qǐng)請(qǐng)分析語句分析語句y = x 運(yùn)算符普通方式:操作數(shù)運(yùn)算符普通方式:操作數(shù)1操作數(shù)操作數(shù)2v對(duì)操作數(shù)對(duì)操作數(shù)1的每一位都向右挪
22、動(dòng)操作數(shù)的每一位都向右挪動(dòng)操作數(shù)2位位v留意:留意:v假設(shè)操作數(shù)假設(shè)操作數(shù)1為無符號(hào)整型數(shù)或帶符號(hào)的非負(fù)為無符號(hào)整型數(shù)或帶符號(hào)的非負(fù)數(shù)時(shí),操作數(shù)數(shù)時(shí),操作數(shù)1的各二進(jìn)制位右移操作數(shù)的各二進(jìn)制位右移操作數(shù)2指定指定的位數(shù),高位補(bǔ)的位數(shù),高位補(bǔ)0。如:將。如:將(0100 0110)b 右移右移兩位將得到兩位將得到(0001 0001)b。v假設(shè)操作數(shù)假設(shè)操作數(shù)1為帶符號(hào)的負(fù)數(shù)時(shí),操作數(shù)為帶符號(hào)的負(fù)數(shù)時(shí),操作數(shù)1的各二的各二進(jìn)制位右移操作數(shù)進(jìn)制位右移操作數(shù)2指定的位數(shù):指定的位數(shù):v有的在高位補(bǔ)有的在高位補(bǔ)0,此時(shí)將,此時(shí)將(1000 0110)(0010 0001)b。v有的將操作數(shù)有的將操作數(shù)
23、1移出的低位移入高位,此時(shí)將移出的低位移入高位,此時(shí)將(1000 0110)b (10100001)b。v含有對(duì)帶符號(hào)的負(fù)數(shù)進(jìn)展右移的程序是不可移植含有對(duì)帶符號(hào)的負(fù)數(shù)進(jìn)展右移的程序是不可移植的。的。位運(yùn)算操作運(yùn)算符位運(yùn)算操作運(yùn)算符 如操作數(shù)2是負(fù)數(shù),那么移位運(yùn)算符的結(jié)果是未定義的; 如操作數(shù)2的值大于或等于轉(zhuǎn)換后左操作數(shù)1數(shù)值的位數(shù),那么移位運(yùn)算符的結(jié)果也是未定義的。位運(yùn)算操作運(yùn)算符位運(yùn)算操作運(yùn)算符v例例4-35 設(shè)有設(shè)有unsigned int x = 0XFAFF, y;,請(qǐng)分析語句,請(qǐng)分析語句y = x 3;執(zhí)行后,執(zhí)行后,y的值。的值。逗號(hào)運(yùn)算符逗號(hào)運(yùn)算符v逗號(hào)表達(dá)式又稱順序表達(dá)式包括
24、逗號(hào)分開的逗號(hào)表達(dá)式又稱順序表達(dá)式包括逗號(hào)分開的兩個(gè)表達(dá)式。兩個(gè)表達(dá)式。v普通方式為:表達(dá)式普通方式為:表達(dá)式1,表達(dá)式表達(dá)式2v留意:留意:v逗號(hào)表達(dá)式的結(jié)合律是從左至右。表達(dá)式逗號(hào)表達(dá)式的結(jié)合律是從左至右。表達(dá)式2的值的值作為整個(gè)逗號(hào)表達(dá)式的值。作為整個(gè)逗號(hào)表達(dá)式的值。v表達(dá)式表達(dá)式1和表達(dá)式和表達(dá)式2也可以是逗號(hào)表達(dá)式。也可以是逗號(hào)表達(dá)式。v并不是有逗號(hào)出現(xiàn)的地方,就可以被以為是逗號(hào)并不是有逗號(hào)出現(xiàn)的地方,就可以被以為是逗號(hào)表達(dá)式。表達(dá)式。逗號(hào)運(yùn)算符逗號(hào)運(yùn)算符v例例4-36 設(shè)有設(shè)有int x = 3, y;,請(qǐng)分析語句,請(qǐng)分析語句y= x+3,4;執(zhí)行后,執(zhí)行后,y的值?的值?v例例4
25、-37 設(shè)有設(shè)有int x = 3, y;,請(qǐng)分析語句,請(qǐng)分析語句y=(x+3,4);執(zhí)行后,執(zhí)行后,y的值?的值?v例例4-38 設(shè)有設(shè)有int x = 3, y;,請(qǐng)分析語句,請(qǐng)分析語句y=(x+3,4,5),x+6);執(zhí)行后,執(zhí)行后,y的值?的值?運(yùn)算符表達(dá)式總結(jié)運(yùn)算符表達(dá)式總結(jié)vC C言語運(yùn)算符可分為以下幾類:言語運(yùn)算符可分為以下幾類:v算數(shù)運(yùn)算符:算數(shù)運(yùn)算符:+ +、- -、* *、/ /、% %、+、-v關(guān)系運(yùn)算符:關(guān)系運(yùn)算符: 、 =、=,=,=v條件運(yùn)算符:條件運(yùn)算符:?:?:v位運(yùn)算符:位運(yùn)算符:& &、| |、 、 、v逗號(hào)運(yùn)算符:,逗號(hào)運(yùn)算符:,v指針運(yùn)算
26、符:指針運(yùn)算符:* *、& &v求字節(jié)數(shù)運(yùn)算符:求字節(jié)數(shù)運(yùn)算符:sizeofsizeofv特殊運(yùn)算符:括號(hào)特殊運(yùn)算符:括號(hào)()(),下標(biāo),下標(biāo),成員,成員(,.).)問題:假設(shè)把不同類型的變量相互運(yùn)算會(huì)怎樣呢?不同類型的變量進(jìn)展運(yùn)算不同類型的變量進(jìn)展運(yùn)算vint x = 5;float y = 4.6;vfloat z=x+y;vdouble z=x+y;vint z=x+y;問題:為什么會(huì)這樣?什么時(shí)候結(jié)果正常,什么時(shí)候不正常呢?本章授課內(nèi)容本章授課內(nèi)容內(nèi)存溢出內(nèi)存溢出類型轉(zhuǎn)換類型轉(zhuǎn)換運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式左值和右值左值和右值C程序的語法程序的語法類型轉(zhuǎn)換類型轉(zhuǎn)換v類型
27、轉(zhuǎn)換分為隱式類型轉(zhuǎn)換和顯示類型轉(zhuǎn)換。類型轉(zhuǎn)換分為隱式類型轉(zhuǎn)換和顯示類型轉(zhuǎn)換。int x = 0 x89898; /*等價(jià)于 int x = 0 x00089898;*/short y;y = x;隱式類型轉(zhuǎn)換隱式類型轉(zhuǎn)換v在表達(dá)式中假設(shè)有不同類型的變量或字面值參與在表達(dá)式中假設(shè)有不同類型的變量或字面值參與同一運(yùn)算時(shí),編譯器將在編譯時(shí)自動(dòng)按照規(guī)定的同一運(yùn)算時(shí),編譯器將在編譯時(shí)自動(dòng)按照規(guī)定的規(guī)那么將其轉(zhuǎn)換為一樣的數(shù)據(jù)類型,這種由編譯規(guī)那么將其轉(zhuǎn)換為一樣的數(shù)據(jù)類型,這種由編譯自動(dòng)完成的轉(zhuǎn)換即是隱式轉(zhuǎn)換。自動(dòng)完成的轉(zhuǎn)換即是隱式轉(zhuǎn)換。v整數(shù)轉(zhuǎn)換級(jí)別:整數(shù)轉(zhuǎn)換級(jí)別:隱式類型轉(zhuǎn)換隱式類型轉(zhuǎn)換v對(duì)于對(duì)于 操作
28、數(shù)操作數(shù)1=操作數(shù)操作數(shù)2,操作數(shù),操作數(shù)1的類型為的類型為T1,操作數(shù)操作數(shù)2的類型為的類型為T2,實(shí)踐的運(yùn)算過程為:實(shí)踐的運(yùn)算過程為:v計(jì)算操作數(shù)計(jì)算操作數(shù)2的值,設(shè)得的值,設(shè)得v2v把把v2轉(zhuǎn)換為轉(zhuǎn)換為T1類型類型v計(jì)算操作數(shù)計(jì)算操作數(shù)1的值的值v用轉(zhuǎn)換后的用轉(zhuǎn)換后的v2的值更新操作數(shù)的值更新操作數(shù)1代表的對(duì)象值。代表的對(duì)象值。vint x=3,y=2;vfloat z = x/y;隱式類型轉(zhuǎn)換隱式類型轉(zhuǎn)換問題:隱式類型轉(zhuǎn)換自動(dòng)進(jìn)展,我干嘛還要掌握規(guī)那么呢?隱式類型轉(zhuǎn)換隱式類型轉(zhuǎn)換v例例4-45 設(shè)有設(shè)有int x = 0 x00110000;short y; y = x; v例例4-4
29、6 設(shè)有設(shè)有short s = 0 xFFFF; unsigned int i; i = s;v例例4-47 設(shè)有設(shè)有int i; unsigned int u = 0 xFFFFFFFF; i = u;v例例4-48 設(shè)有設(shè)有unsigned int x = -1;int y = x;v例例4-49 設(shè)有設(shè)有unsigned int u = 3; float f = 3.14; short s = 5; int x; x = f + u * s;求求x。隱式類型轉(zhuǎn)換隱式類型轉(zhuǎn)換/*源文件:demo4_7.c*/#include #include int main(void) int i; u
30、nsigned int u; int y; printf(請(qǐng)輸入i 值:); scanf(%d, &i); printf(請(qǐng)輸入u 值:); scanf(%d, &u); y = i u? i : u; printf(i=%d、u=%d 中大的數(shù)是%dn, i, u, y); system(PAUSE); return 0;留意:留意: 在一個(gè)表達(dá)式中盡在一個(gè)表達(dá)式中盡量防止帶符號(hào)和無符量防止帶符號(hào)和無符號(hào)的數(shù)同時(shí)出現(xiàn)號(hào)的數(shù)同時(shí)出現(xiàn). .隱式類型轉(zhuǎn)換隱式類型轉(zhuǎn)換留意:留意:1.1.隱式類型轉(zhuǎn)換是編譯器自動(dòng)進(jìn)展的隱式類型轉(zhuǎn)換是編譯器自動(dòng)進(jìn)展的. .2.2.隱式類型轉(zhuǎn)換普通是向較大的類型轉(zhuǎn)變隱式類型轉(zhuǎn)換普通是向較大的類型轉(zhuǎn)變. .顯示類型轉(zhuǎn)換顯示類型轉(zhuǎn)換v顯式轉(zhuǎn)換表達(dá)式的普通方式為:顯式轉(zhuǎn)換表達(dá)式的普通方式為:v(希望轉(zhuǎn)換的類型希望轉(zhuǎn)換的類型) 操作數(shù)操作數(shù)顯示類型轉(zhuǎn)換顯示類型轉(zhuǎn)換v例例4-49 設(shè)有設(shè)有int x = 3, y = 0 xFFFFFFFF; double f;,請(qǐng)分析以下語句執(zhí)行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國廚衛(wèi)散熱器數(shù)據(jù)監(jiān)測研究報(bào)告
- 養(yǎng)殖標(biāo)準(zhǔn)合同范例
- 農(nóng)村房子出租合同范例
- 制作宣傳海報(bào)合同范本
- 2014網(wǎng)簽合同范本
- 勞務(wù)合同范例重寫
- 2025年度客運(yùn)站旅客信息服務(wù)系統(tǒng)升級(jí)合同
- 保證合同范例 博客
- 農(nóng)村保姆協(xié)議合同范本
- 深化教育改革與人才培養(yǎng)質(zhì)量提升并行
- 2025年寬帶研究分析報(bào)告
- 建筑與市政工程第三方質(zhì)量安全巡查方案
- 二零二五版財(cái)務(wù)顧問保密與工作內(nèi)容協(xié)議3篇
- 2025-2030年中國干混砂漿行業(yè)運(yùn)行狀況及發(fā)展趨勢預(yù)測報(bào)告
- 2025江蘇鹽城市交通投資建設(shè)控股集團(tuán)限公司招聘19人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024托管班二人合伙的協(xié)議書
- 《輸電線路金具識(shí)別》課件
- 基于PLC的豬場智能液態(tài)飼喂系統(tǒng)的設(shè)計(jì)與研究
- 企業(yè)內(nèi)部管理流程優(yōu)化方案
- 2023-2024學(xué)年浙江省金華市武義縣七年級(jí)(上)期末英語試卷
- 任務(wù)型閱讀 -2024年浙江中考英語試題專項(xiàng)復(fù)習(xí)(解析版)
評(píng)論
0/150
提交評(píng)論