《C語言程序設(shè)計(jì)》課件-第2章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第1頁
《C語言程序設(shè)計(jì)》課件-第2章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第2頁
《C語言程序設(shè)計(jì)》課件-第2章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第3頁
《C語言程序設(shè)計(jì)》課件-第2章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第4頁
《C語言程序設(shè)計(jì)》課件-第2章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第5頁
已閱讀5頁,還剩72頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2.08421碼解決進(jìn)制轉(zhuǎn)換第2章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式思政目標(biāo)

通過了解計(jì)算機(jī)中不同進(jìn)制數(shù)的轉(zhuǎn)換規(guī)則和數(shù)值表示方法,培養(yǎng)學(xué)生嚴(yán)謹(jǐn)?shù)倪壿嬎季S和科學(xué)精神,使其明白在處理問題時(shí)需要遵循一定的規(guī)則和方法,就像計(jì)算機(jī)處理數(shù)據(jù)一樣精確無誤。

引導(dǎo)學(xué)生認(rèn)識(shí)到計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)和運(yùn)算的基本原理,激發(fā)學(xué)生對(duì)信息技術(shù)發(fā)展的興趣,鼓勵(lì)學(xué)生積極探索科技知識(shí),為未來科技發(fā)展貢獻(xiàn)力量,同時(shí)培養(yǎng)學(xué)生的創(chuàng)新意識(shí)和探索精神。2.08421碼解決進(jìn)制轉(zhuǎn)換2.08421碼解決進(jìn)制轉(zhuǎn)換計(jì)算機(jī)中數(shù)的表示及進(jìn)制轉(zhuǎn)換數(shù)碼、基與權(quán)數(shù)碼:表示數(shù)的符號(hào)基:數(shù)碼的個(gè)數(shù)權(quán):每一位所具有的值數(shù)制<>語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C各種進(jìn)制之間的轉(zhuǎn)換二進(jìn)制、八進(jìn)制、十六進(jìn)制轉(zhuǎn)換成十進(jìn)制方法:按權(quán)相加<>語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C各種進(jìn)制之間的轉(zhuǎn)換(整數(shù))二進(jìn)制、八進(jìn)制、十六進(jìn)制轉(zhuǎn)換成十進(jìn)制方法:按權(quán)相加十進(jìn)制轉(zhuǎn)換成二進(jìn)制、八進(jìn)制、十六進(jìn)制原理:方法:連續(xù)除以基,從低到高記錄余數(shù),直至商為0例把十進(jìn)制數(shù)59轉(zhuǎn)換成二進(jìn)制數(shù)5922921427232120(59)10=(111011)2110111111011余余余余余余例把十進(jìn)制數(shù)159轉(zhuǎn)換成八進(jìn)制數(shù)1598198280(159)10=(237)8237余7余3余2例把十進(jìn)制數(shù)459轉(zhuǎn)換成十六進(jìn)制數(shù)4591628161160(459)10=(1CB)161CB余11余12余1語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換二進(jìn)制轉(zhuǎn)換成八進(jìn)制:從右向左,每3位一組(不足3位左補(bǔ)0),轉(zhuǎn)換成八進(jìn)制八進(jìn)制轉(zhuǎn)換成二進(jìn)制:用3位二進(jìn)制數(shù)代替每一位八進(jìn)制數(shù)例(1101001)2=(001,101,001)2=(151)8例(246)8=(010,100,110)2=(10100110)2000~0001~1010~2011~3100~4101~5110~6111~7<>語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換二進(jìn)制轉(zhuǎn)換成十六進(jìn)制:從右向左,每4位一組(不足4位左補(bǔ)0),轉(zhuǎn)換成十六進(jìn)制十六進(jìn)制轉(zhuǎn)換成二進(jìn)制:用4位二進(jìn)制數(shù)代替每一位十六進(jìn)制數(shù)例(11010101111101)2=(0011,0101,0111,1101)2=(357D)16例(4B9E)16=(0100,1011,1001,1110)2=(100101110011110)20000~00001~10010~20011~30100~40101~50110~60111~71000~81001~91010~A1011~B1100~C1101~D1110~E1111~F<>語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C字節(jié)和位內(nèi)存以字節(jié)為單元組成每個(gè)字節(jié)有一個(gè)地址一個(gè)字節(jié)一般由8個(gè)二進(jìn)制位組成每個(gè)二進(jìn)位的值是0或101234567012345678910……...<>語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C7643251數(shù)值的表示方法——原碼、反碼和補(bǔ)碼原碼:最高位為符號(hào)位,其余各位為數(shù)值本身的絕對(duì)值反碼:正數(shù):反碼與原碼相同負(fù)數(shù):符號(hào)位為1,其余位對(duì)原碼取反補(bǔ)碼:正數(shù):原碼、反碼、補(bǔ)碼相同負(fù)數(shù):最高位為1,其余位為原碼取反,再對(duì)整個(gè)數(shù)加13126912457810119-5=49+7=16=(14)12<>語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C原碼反碼補(bǔ)碼+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000數(shù)的范圍01111111~11111111(-127~+127)01111111~10000000(-127~+127)01111111~10000000(-128~+127)(用一字節(jié)表示數(shù))負(fù)數(shù)補(bǔ)碼轉(zhuǎn)換成十進(jìn)制數(shù):最高位不動(dòng),其余位取反加1例補(bǔ)碼:11111001

取反:10000110

加1:10000111=-7<>語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C思政目標(biāo)

通過了解數(shù)據(jù)類型的多樣性和各自特點(diǎn),引導(dǎo)學(xué)生認(rèn)識(shí)到在不同情境下需要精準(zhǔn)選擇合適的“類型”,培養(yǎng)學(xué)生具體問題具體分析的思維方式,如同在生活中根據(jù)不同情況做出恰當(dāng)決策。

強(qiáng)調(diào)數(shù)據(jù)類型決定數(shù)據(jù)的存儲(chǔ)和操作方式,讓學(xué)生明白規(guī)則和定義的重要性,培養(yǎng)學(xué)生嚴(yán)謹(jǐn)?shù)倪壿嬎季S和遵守規(guī)則的意識(shí),就像遵循社會(huì)規(guī)則和道德準(zhǔn)則一樣,確保行為的準(zhǔn)確性和有效性。2.1數(shù)據(jù)類型2.1

數(shù)據(jù)類型數(shù)據(jù)類型總表<>C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void定義類型typedef字符類型char枚舉類型enum整型實(shí)型單精度型float雙精度型double數(shù)組結(jié)構(gòu)體struct共用體union短整型short長整型long整型int數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進(jìn)行的操作語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C基本數(shù)據(jù)類型<>類型符號(hào)關(guān)鍵字?jǐn)?shù)的表示范圍所占位數(shù)整型字符型實(shí)型有無(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說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機(jī)器硬件不同而不同,上表以IBMPC機(jī)為例:語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C思政目標(biāo)

從常量與變量的定義和規(guī)則中,培養(yǎng)學(xué)生尊重客觀規(guī)律和堅(jiān)守原則的意識(shí),就像常量的值不可改變一樣,讓學(xué)生明白在生活和學(xué)習(xí)中有些規(guī)則和原則必須始終堅(jiān)守,不可隨意違背。

通過學(xué)習(xí)標(biāo)識(shí)符的命名原則,引導(dǎo)學(xué)生注重細(xì)節(jié)、嚴(yán)謹(jǐn)認(rèn)真,培養(yǎng)學(xué)生良好的行為規(guī)范和道德準(zhǔn)則,使其明白在任何事情上都要秉持認(rèn)真負(fù)責(zé)的態(tài)度,避免因小失大。2.2常量與變量2.2

常量與變量標(biāo)識(shí)符定義:用來標(biāo)識(shí)變量、常量、函數(shù)等的字符序列組成:只能由字母、數(shù)字、下劃線組成,且第一個(gè)字母必須是字母或下劃線大小寫敏感不能使用關(guān)鍵字長度:最長32個(gè)字符命名原則:見名知意不宜混淆如l與I,o與0例:判斷下列標(biāo)識(shí)符號(hào)合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123<>M.D.John3days#33char$123a>b語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C一般用大寫字母是宏定義預(yù)處理命令,不是C語句直接常量:整型常量實(shí)型常量字符常量字符串常量如#definePRICE30常量定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù))分類:符號(hào)常量:用標(biāo)識(shí)符代表常量定義格式:#define

符號(hào)常量常量>>>><>例符號(hào)常量舉例#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}運(yùn)行結(jié)果:total=300語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C整型常量(整常數(shù))三種形式:十進(jìn)制整數(shù):由數(shù)字0~9和正負(fù)號(hào)表示.如123,-456,0八進(jìn)制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.如0123,011十六進(jìn)制整數(shù):由0x開頭,后跟0~9,a~f,A~F表示.如0x123,0Xff<例12與12L例30000為int型65536為longint型整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型在整常量后加字母l或L,認(rèn)為它是longint

型常量問題:0123=()100x123=()100Xff=()1083291255問題:0123=()100x123=()100Xff=()10語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C實(shí)型常量(實(shí)數(shù)或浮點(diǎn)數(shù))表示形式:十進(jìn)制數(shù)形式:(必須有小數(shù)點(diǎn))如0.123,.123,123.0,0.0,123.指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3,123E2,1.23e4,e-5,1.2E-3.5

<實(shí)型常量的類型默認(rèn)double型在實(shí)型常量后加字母f或F,認(rèn)為它是float型語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C字符常量定義:用單引號(hào)括起來的單個(gè)普通字符或轉(zhuǎn)義字符.

字符常量的值:該字符的ASCII碼值<轉(zhuǎn)義字符及其含義:轉(zhuǎn)義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉(zhuǎn)義字符含義換行垂直制表回車響鈴單引號(hào)3位8進(jìn)制數(shù)代表的字符水平制表退格換頁反斜線雙引號(hào)2位16進(jìn)制數(shù)代表的字符如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------(

)例:‘A’-------’\101’-------’\x41’--------65<如‘A’——65,‘a(chǎn)’——97,

‘0’——48,‘\n’——10如‘a(chǎn)’‘A’‘?’‘\n’‘\101’轉(zhuǎn)義字符:反斜線后面跟一個(gè)字符或一個(gè)代碼值表示例轉(zhuǎn)義字符舉例(2-1.c)main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}運(yùn)行結(jié)果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’例(2-2.c)

main(){printf(“Y\b=\n”);}運(yùn)行結(jié)果:屏幕顯示:=打印機(jī)輸出:¥<字符常量與字符串常量不同字符串常量定義:用雙引號(hào)(“”)括起來的字符序列存儲(chǔ):每個(gè)字符串尾自動(dòng)加一個(gè)‘\0’作為字符串結(jié)束標(biāo)志hello\0例字符串“hello”在內(nèi)存中aa\0例‘a(chǎn)’“a”例空串“”\0例:charch;ch=“A”;例:charch;ch=‘A’;語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元…...地址inta=1,b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址…...內(nèi)存1-3

隨機(jī)數(shù)變量概念:其值可以改變的量變量名與變量值變量定義的一般格式:

數(shù)據(jù)類型變量1[,變量2,…,變量n];<>變量初始化:定義時(shí)賦初值例:inta,b,c;floatdata;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標(biāo)識(shí)符例:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;

intx=y=z=1;變量的使用:先定義,后使用例1intstudent;stadent=19;//Undefinedsymbol‘statent’infunctionmain

例2floata,b,c;c=a%b;//Illegaluseoffloatingpointinfunctionmain

變量定義位置:一般放在函數(shù)開頭main(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;printf(“data=%f\n”,data);}變量定義可執(zhí)行語句main(){inta,b=2;a=1;floatdata;data=(a+b)*1.2;printf(“data=%f\n”,data);}語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C整型變量占字節(jié)數(shù)隨機(jī)器不同而不同,一般占一個(gè)機(jī)器字short≤int≤long可用sizeof(類型標(biāo)識(shí)符)測量實(shí)型變量float:占4字節(jié),提供7位有效數(shù)字double:占8字節(jié),提供15~16位有效數(shù)字字符型變量字符變量存放字符ASCII碼char與int數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/<>沒有字符串變量,用字符數(shù)組存放語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C例/*2-3.c*/#definePRICE12.5main(){intnum=3;floattotal;charch1,ch2=‘D’;total=num*PRICE;ch1=ch2-‘A’+‘a(chǎn)’;printf(“total=%f,ch1=%c\n”,total,ch1);}宏定義變量定義輸出結(jié)果運(yùn)行結(jié)果:total=37.500000,ch1=d語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C思政目標(biāo)

在不同類型數(shù)據(jù)間轉(zhuǎn)換的學(xué)習(xí)中,讓學(xué)生理解事物在不同環(huán)境和需求下可以相互轉(zhuǎn)化,培養(yǎng)學(xué)生靈活應(yīng)變的思維方式,同時(shí)引導(dǎo)學(xué)生在面對(duì)變化時(shí)保持理性和謹(jǐn)慎,如同數(shù)據(jù)轉(zhuǎn)換遵循一定規(guī)則一樣,在生活中也要遵循社會(huì)規(guī)范和道德準(zhǔn)則去適應(yīng)變化。

通過隱式轉(zhuǎn)換自動(dòng)發(fā)生和顯式轉(zhuǎn)換需明確指定的特點(diǎn),教育學(xué)生在面對(duì)復(fù)雜情況時(shí)既要學(xué)會(huì)順應(yīng)自然規(guī)律(類似隱式轉(zhuǎn)換),又要在必要時(shí)積極主動(dòng)地做出正確選擇(類似顯式轉(zhuǎn)換),培養(yǎng)學(xué)生的自主意識(shí)和責(zé)任感,使其明白在團(tuán)隊(duì)合作和社會(huì)交往中要把握好主動(dòng)與被動(dòng)的關(guān)系,以實(shí)現(xiàn)共同發(fā)展。2.3不同類型數(shù)據(jù)間的轉(zhuǎn)換2.3不同類型數(shù)據(jù)間的轉(zhuǎn)換隱式轉(zhuǎn)換什么情況下發(fā)生運(yùn)算轉(zhuǎn)換------不同類型數(shù)據(jù)混合運(yùn)算時(shí)賦值轉(zhuǎn)換------把一個(gè)值賦給與其類型不同的變量時(shí)輸出轉(zhuǎn)換------輸出時(shí)轉(zhuǎn)換成指定的輸出格式函數(shù)調(diào)用轉(zhuǎn)換------實(shí)參與形參類型不一致時(shí)轉(zhuǎn)換運(yùn)算轉(zhuǎn)換規(guī)則:不同類型數(shù)據(jù)運(yùn)算時(shí)先自動(dòng)轉(zhuǎn)換成同一類型<>語言程序設(shè)計(jì)第二章數(shù)據(jù)描述Cdoublefloatlongunsignedintchar,short低高說明:必定的轉(zhuǎn)換運(yùn)算對(duì)象類型不同時(shí)轉(zhuǎn)換例charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a(chǎn)’+i*f-d/l例inti;floatf;doubled;longl;<>顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)一般形式:(類型名)(表達(dá)式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6說明:強(qiáng)制轉(zhuǎn)換得到所需類型的中間變量,原變量類型不變例main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結(jié)果:x=3.600000,i=3精度損失問題較高類型向較低類型轉(zhuǎn)換時(shí)可能發(fā)生<>2-4.c語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C思政目標(biāo)

通過學(xué)習(xí)運(yùn)算符的優(yōu)先級(jí)和結(jié)合性規(guī)則,培養(yǎng)學(xué)生在處理復(fù)雜問題時(shí)有條不紊、遵循秩序的意識(shí),如同在社會(huì)生活中遵守法律法規(guī)和道德規(guī)范一樣,確保各項(xiàng)事務(wù)有序進(jìn)行,以促進(jìn)社會(huì)和諧穩(wěn)定。

在理解不同類型數(shù)據(jù)間轉(zhuǎn)換以及各種運(yùn)算符運(yùn)算規(guī)則的過程中,引導(dǎo)學(xué)生認(rèn)識(shí)到事物之間相互聯(lián)系、相互影響,培養(yǎng)學(xué)生用全面、系統(tǒng)的觀點(diǎn)看待問題和解決問題的能力,同時(shí)鼓勵(lì)學(xué)生在面對(duì)復(fù)雜情況時(shí)積極探索規(guī)律、勇于創(chuàng)新,就像在編程中巧妙運(yùn)用運(yùn)算符和數(shù)據(jù)轉(zhuǎn)換來實(shí)現(xiàn)高效程序一樣,在學(xué)習(xí)和生活中也要善于發(fā)現(xiàn)規(guī)律、運(yùn)用規(guī)律,不斷提升自己的能力和素質(zhì)。2.4運(yùn)算符和表達(dá)式2.4

運(yùn)算符和表達(dá)式C運(yùn)算符算術(shù)運(yùn)算符:(+-*/%++--)關(guān)系運(yùn)算符:(<<===>>=!=)邏輯運(yùn)算符:((!&&||)位運(yùn)算符:(<<>>~|^&)賦值運(yùn)算符:(=及其擴(kuò)展)條件運(yùn)算符:(?:)逗號(hào)運(yùn)算符:(,)指針運(yùn)算符:(*&)求字節(jié)數(shù):(sizeof)強(qiáng)制類型轉(zhuǎn)換:(類型)分量運(yùn)算符:(.->)下標(biāo)運(yùn)算符:([])其它:(()-)<>語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C學(xué)習(xí)運(yùn)算符應(yīng)注意:運(yùn)算符功能與運(yùn)算量關(guān)系要求運(yùn)算量個(gè)數(shù)要求運(yùn)算量類型運(yùn)算符優(yōu)先級(jí)別結(jié)合方向結(jié)果的類型<>語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C算術(shù)運(yùn)算符和表達(dá)式基本算術(shù)運(yùn)算符:+-*/%結(jié)合方向:從左向右優(yōu)先級(jí):----->*/%----->+-(2)(3)(4) 說明:“-”可為單目運(yùn)算符時(shí),右結(jié)合性兩整數(shù)相除,結(jié)果為整數(shù)%要求兩側(cè)均為整型數(shù)據(jù)例5/2=-5/2.0=例5%2=-5%2=1%10=

5%1=5.5%2<>例5/2=2

-5/2.0=-2.5例5%2=1

-5%2=-11%10=

1

5%1=

05.5%2()語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C自增、自減運(yùn)算符++--作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)例j=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;<>//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C自增、自減運(yùn)算符++--作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)說明:++--不能用于常量和表達(dá)式,如5++,(a+b)++++--結(jié)合方向:自右向左優(yōu)先級(jí):-++-------->*/%----->+-

(2)(3)(4)例-i++-(i++)i=3;printf(“%d”,-i++);//-3

例j+++k;(j++)+k;例-i++i=3;printf(“%d”,-i++);2-5.c語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C賦值運(yùn)算符和表達(dá)式簡單賦值運(yùn)算符符號(hào):=格式:變量標(biāo)識(shí)符=表達(dá)式作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量復(fù)合賦值運(yùn)算符種類:+=-=*=/=%=《=》=&=^=|=含義:exp1op=exp2

exp1=exp1opexp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3<>例a=3;d=func();c=d+2;語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C說明:結(jié)合方向:自右向左優(yōu)先級(jí):14左側(cè)必須是變量,不能是常量或表達(dá)式賦值表達(dá)式的值與變量值相等,且可嵌套賦值轉(zhuǎn)換規(guī)則:使賦值號(hào)右邊表達(dá)式值自動(dòng)轉(zhuǎn)換成其左邊變量的類型例3=x-2*y;a+b=3;例

floatf;inti;i=10;f=i;則

f=10.0例inti;i=2.56;//結(jié)果i=2;例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)<>//表達(dá)式值為5,a,b,c值為5//b=5;a=5//表達(dá)式值11,c=6,a=11//表達(dá)式值10,a=10,b=4,c=6//表達(dá)式值5,a=5,b=10,c=2語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C說明:結(jié)合方向:自右向左優(yōu)先級(jí):12左側(cè)必須是變量,不能是常量或表達(dá)式賦值表達(dá)式的值與變量值相等,且可嵌套賦值轉(zhuǎn)換規(guī)則:使賦值號(hào)右邊表達(dá)式值自動(dòng)轉(zhuǎn)換成其左邊變量的類型例:a=12;a+=a-=a*a例:inta=2;a%=4-1;a+=a*=a-=a*=3;<>//a=-264等價(jià)于a=a+(a=a-(a*a))//a=0等價(jià)于a=a+(a=a*(a=a-(a=a*3)))語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C逗號(hào)運(yùn)算符和表達(dá)式形式:表達(dá)式1,表達(dá)式2,……表達(dá)式n結(jié)合性:從左向右優(yōu)先級(jí):15逗號(hào)表達(dá)式的值:等于表達(dá)式n的值用途:常用于循環(huán)for語句中例a=3*5,a*4a=3*5,a*4,a+5例x=(a=3,6*3)x=a=3,6*a例a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);<>//a=15,表達(dá)式值60//a=15,表達(dá)式值20//賦值表達(dá)式,表達(dá)式值18,x=18//逗號(hào)表達(dá)式,表達(dá)式值18,x=3//1,2,3//3,2,3語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C逗號(hào)運(yùn)算符和表達(dá)式形式:表達(dá)式1,表達(dá)式2,……表達(dá)式n結(jié)合性:從左向右優(yōu)先級(jí):15逗號(hào)表達(dá)式的值:等于表達(dá)式n的值用途:常用于循環(huán)for語句中例:/*2-6.c*/#include<stdio.h>main(){intx,y=7;floatz=4;x=(y=y+6,y/z);printf("x=%d\n",x);}運(yùn)行結(jié)果:x=3<>語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C關(guān)系運(yùn)算符和表達(dá)式關(guān)系運(yùn)算符種類:<<===>=>!=結(jié)合方向:自左向右優(yōu)先級(jí)別:<<=>>===!=優(yōu)先級(jí)6(高)優(yōu)先級(jí)7(低)例c>a+b//c>(a+b)a>b!=c//(a>b)!=ca==b<c//a==(b<c)a=b>c//a=(b>c)關(guān)系表達(dá)式的值:是邏輯值“真”或“假”,用1和0表示例inta=3,b=2,c=1,d,f;a>b(a>b)==cb+c<ad=a>bf=a>b>c<>//表達(dá)式值1//表達(dá)式值1//表達(dá)式值0//d=1//f=0語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C關(guān)系運(yùn)算注意:<>例若a=0;b=0.5;x=0.3;

則a<=x<=b的值為0例5>2>7>8在C中是允許的,值為0例inti=1,j=7,a;a=i+(j%4!=0);

則a=2例‘a(chǎn)’>0結(jié)果為‘A’>100結(jié)果為10語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C關(guān)系運(yùn)算注意:例注意區(qū)分“=”與“==”inta=0,b=1;if(a=b)printf(“aequaltob”);elseprintf(“anotequaltob”);例應(yīng)避免對(duì)實(shí)數(shù)作相等或不等的判斷如1.0/3.0*3.0==1.0結(jié)果為可改寫為:fabs(1.0/3.0*3.0-1.0)<1e-60語言程序設(shè)計(jì)第二章數(shù)據(jù)描述Cab!a!ba&&ba||b真假真假假假真真邏輯運(yùn)算符和表達(dá)式邏輯運(yùn)算符種類:!&&||邏輯運(yùn)算真值表C語言中,運(yùn)算量:0表示“假”,非0表示“真”,運(yùn)算結(jié)果:0表示“假”,1表示“真”,<>真假假假假假真真假假真真真假真真語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C!(2)&&(11)||(12)高低例a<=x&&x<=b

a>b&&x>ya==b||x==y!a||a>b優(yōu)先級(jí):結(jié)合方向:!:從右向左&&:從左向右||:從左向右<>//(a<=x)&&(x<=b)//(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C!(2)&&(11)||(12)高低優(yōu)先級(jí):結(jié)合方向:!:從右向左&&:從左向右||:從左向右例a=4;b=5;!aa&&ba||b!a||b4&&0||25>3&&2||8<4-!0‘c’&&‘d’<>值為1值為0值為1值為1值為1值為1//(5>3)&&2||(8<(4-(!0)))值為1語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C!(2)&&(11)||(12)高低優(yōu)先級(jí):結(jié)合方向:!:從右向左&&:從左向右||:從左向右短路特性:邏輯表達(dá)式求解時(shí),并非所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符<>例a&&b&&c//只在a為真時(shí),才判別b的值;只在a、b都為真時(shí),才判別c的值例a||b||c//只在a為假時(shí),才判別b的值;只在a、b都為假時(shí),才判別c的值例a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)//結(jié)果m=0,n=1語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C條件運(yùn)算符與表達(dá)式一般形式:expr1?expr2:expr3執(zhí)行過程功能:相當(dāng)于條件語句,但不能取代一般if語句例if(a>b)printf(“%d”,a);elseprintf(“%d”,b);printf(“%d”,a>b?a:b);例求a+|b|printf(“a+|b|=%d\n”,b>0?a+b:a-b);expr1取expr2值取expr3值非0=0例(a==b)?’Y’:’N’(x%2==1)?1:0(x>=0)?x:-x(c>=‘a(chǎn)’&&c<=‘z’)?c-’a’+’A’:c條件運(yùn)算符可嵌套

如x>0?1:(x<0?-1:0)優(yōu)先級(jí):13結(jié)合方向:自右向左

如a>b?a:c>d?c:da>b?a:(c>d?c:d)expr1、expr2、expr3類型可不同,表達(dá)式值取較高的類型<>例x?‘a(chǎn)’:‘b’//x=0,表達(dá)式值為‘b’;x?0,表達(dá)式值為‘a(chǎn)’x>y?1:1.5//x>y,值為1.0;x<y,值為1.5語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C0111111111111111int型:最大:327671000000000000000最小:-327681111111111111111unsignedint型:最大:655350000000000000000最小:0語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C數(shù)制基權(quán)表示數(shù)碼特點(diǎn)10o,101,102,…十進(jìn)制數(shù)0~910逢十進(jìn)一二進(jìn)制數(shù)0~122o,21,22,…逢二進(jìn)一八進(jìn)制數(shù)0~788o,81,82,…逢八進(jìn)一十六進(jìn)制數(shù)0~9,A~F,a~f1616o,161,162,…逢十六進(jìn)一十進(jìn)制:4956=4103+9102+5101+610o二進(jìn)制:1011=123+022+121+12o十六進(jìn)制:81AE=8163+1162+10161+1416o八進(jìn)制:4275=483+282+781+58o語言程序設(shè)計(jì)第二章數(shù)據(jù)描述C位運(yùn)算

位運(yùn)算就是指對(duì)存儲(chǔ)單元二進(jìn)制位的運(yùn),只能對(duì)整型或字符型數(shù)據(jù)進(jìn)行位運(yùn)算,不能用于實(shí)型數(shù)據(jù)?!鞍次慌c”運(yùn)算符(&)(1)規(guī)則:參與運(yùn)算的兩數(shù)(負(fù)數(shù)以補(bǔ)碼方式出現(xiàn))各對(duì)應(yīng)的二進(jìn)位相與,只有對(duì)應(yīng)的兩個(gè)二進(jìn)位均為1時(shí),結(jié)果位才為1,否則為0,它是雙目運(yùn)算符。即:0&0=0;0&1=0;1&0=0;1&1=1。例如:9&5可寫算式如下:9的二進(jìn)制:000010015的二進(jìn)制:00000101

&_____________

00000001可見9&5=1?!鞍次慌c”運(yùn)算符(&)-9&-5可寫算式如下:-9的二進(jìn)制補(bǔ)碼:1111111111110111-5的二進(jìn)制補(bǔ)碼:1111111111111011&_________________-13的二進(jìn)制補(bǔ)碼1111111111110011可見-9&-5=-13。(2)特殊用途:清零、取指定位補(bǔ)碼:存放負(fù)數(shù)的方法。表示方式:先將負(fù)數(shù)取絕對(duì)值后再轉(zhuǎn)換為二進(jìn)制,然后將二進(jìn)制按位求反再加一。“按位或”運(yùn)算符(|)(1)規(guī)則參與運(yùn)算的兩數(shù)(負(fù)數(shù)以補(bǔ)碼出現(xiàn))各對(duì)應(yīng)的二進(jìn)位相或(即邏輯加)。只要對(duì)應(yīng)的兩個(gè)二進(jìn)位有一個(gè)為1時(shí),結(jié)果位就為1,它是雙目運(yùn)算符。即:0|0=0;0|1=1;1|0=1;1|1=1。例如:9|5:0000100100000101 |_________________ 00001101(十進(jìn)制13)可見9|5=13?!鞍次换颉边\(yùn)算符(|)(2)特殊用途將一個(gè)數(shù)據(jù)的某些指定的位置為1。將該數(shù)按位或一個(gè)特定的數(shù),該特定的數(shù)的相應(yīng)位置為1?!鞍次划惢颉边\(yùn)算符(^)(1)規(guī)則參與運(yùn)算的兩數(shù)(負(fù)數(shù)以補(bǔ)碼出現(xiàn))各對(duì)應(yīng)的二進(jìn)位相異或,當(dāng)兩對(duì)應(yīng)的二進(jìn)位相異時(shí),結(jié)果為1,它是雙目運(yùn)算符。即:0^0=0;0^1=1;1^0=1;1^1=0。例如:9^5:

0000100100000101^_____________00001100(十進(jìn)制12)

可見9^5=12?!鞍次划惢颉边\(yùn)算符(^)(2)特殊用途①使特定位翻轉(zhuǎn)要使哪幾位翻轉(zhuǎn)就將與其進(jìn)行“按位異或”運(yùn)算的數(shù)的相應(yīng)位置為1。②使特定位保留原值要使哪幾位保留原值就將與其進(jìn)行“按位異或”運(yùn)算的數(shù)的相應(yīng)位置為0。③交換兩個(gè)值,不用臨時(shí)變量

a=a^b;b=a^b;a=a^b;“求反”運(yùn)算符(~)(1)規(guī)則

對(duì)參與運(yùn)算的數(shù)的各二進(jìn)位按位求反,它是單目運(yùn)算符,具有右結(jié)合性。即:~0=1;~1=0。例如:~9的運(yùn)算為

0000000000001001~------------------

1111111111110110(2)用途

適當(dāng)?shù)氖褂每稍黾映绦虻囊浦残浴!白笠啤边\(yùn)算符(<<)(1)規(guī)則

二進(jìn)位全部左移若干位,由“<<”右邊的數(shù)指定移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)0,它是雙目運(yùn)算符。例如:a<<4指把a(bǔ)的各二進(jìn)位向左移動(dòng)4位。如a=00000011(十進(jìn)制3),左移4位后為00110000(十進(jìn)制48)。(2)特殊用途左移1位相當(dāng)于該數(shù)乘以2;左移n位相當(dāng)于該數(shù)乘以2n。但此結(jié)論只適用于該數(shù)左移時(shí)被溢出舍棄的高位中不包含1的情況。左移比乘法運(yùn)算快得多,有的C編譯系統(tǒng)自動(dòng)將乘2運(yùn)算用左移一位來實(shí)現(xiàn)?!坝乙啤边\(yùn)算符(>>)(1)規(guī)則二進(jìn)位全部右移若干位,“>>”右邊的數(shù)指定移動(dòng)的位數(shù)。(2)特殊用途右移1位相當(dāng)于該數(shù)除以2;右移n位相當(dāng)于該數(shù)除以2n。“右移”運(yùn)算符(>>)(3)說明對(duì)于有符號(hào)數(shù),在右移時(shí),符號(hào)位將隨同移動(dòng)。當(dāng)為正數(shù)時(shí),最高位補(bǔ)0;而為負(fù)數(shù)時(shí),符號(hào)位為1,最高位是補(bǔ)0還是補(bǔ)1取決于計(jì)算機(jī)系統(tǒng)的規(guī)定。移入0的稱為“邏輯右移”;移入1的稱為“算術(shù)右移”。我們可以通過編寫程序來驗(yàn)正所使用的系統(tǒng)是采用“邏輯右移”還是“算術(shù)右移”。很多系統(tǒng)規(guī)定為補(bǔ)1,即“算術(shù)右移”(vc也是)。如:a:1001011111101101a>>1:0100101111110110(邏輯右移)a>>1:1100101111110110(算術(shù)右移)位復(fù)合賦值運(yùn)算符運(yùn)算符名稱例子等價(jià)于&=位與賦值a&=ba=a&b|=位或賦值a|=ba=a|b^=位異或賦值a^=ba=a^b>>=右移賦值a>>=ba=a>>b<<=左移賦值a<<=ba=a<<b思政目標(biāo)

在分析編程中常見錯(cuò)誤的過程中,培養(yǎng)學(xué)生嚴(yán)謹(jǐn)認(rèn)真、一絲不茍的科學(xué)態(tài)度,讓學(xué)生明白在學(xué)習(xí)和工作中,一個(gè)小的疏忽或錯(cuò)誤都可能導(dǎo)致嚴(yán)重的后果,如同程序中的一個(gè)小錯(cuò)誤可能使整個(gè)程序無法正常運(yùn)行,引導(dǎo)學(xué)生注重細(xì)節(jié),追求卓越。

通過對(duì)錯(cuò)誤案例的剖析和修正,引導(dǎo)學(xué)生樹立勇于面對(duì)錯(cuò)誤、積極解決問題的意識(shí),培養(yǎng)學(xué)生堅(jiān)韌不拔的意志品質(zhì),使學(xué)生在遇到困難和挫折時(shí)不退縮、不氣餒,而是冷靜分析、努力克服,如同在調(diào)試程序時(shí)不斷尋找和解決問題,最終實(shí)現(xiàn)程序的正確運(yùn)行。2.5常見錯(cuò)誤分析2.5常見錯(cuò)誤分析標(biāo)志符命名問題1標(biāo)識(shí)符命名規(guī)則中指出:標(biāo)識(shí)符只能由字母、下劃線和數(shù)字組成,且第一個(gè)字符必須是字母或下劃線,不能是數(shù)字;英文字母的大小寫代表不同的標(biāo)識(shí)符;標(biāo)識(shí)符不能是C語言中的關(guān)鍵字。很多初學(xué)者在編寫程序的時(shí)候容易混淆變量中字母的大小寫或者命名不正確。例如:#include<stdio.h>intmain(){ intScore1=90,2score=80,sum; /*變量2score

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論