第2章數據類型運算符和表達式課件-2_第1頁
第2章數據類型運算符和表達式課件-2_第2頁
第2章數據類型運算符和表達式課件-2_第3頁
第2章數據類型運算符和表達式課件-2_第4頁
第2章數據類型運算符和表達式課件-2_第5頁
已閱讀5頁,還剩92頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第2章數據類型、運算符與表達式南京審計學院信息科學與技術學院孫玉星C程序設計弦鱉奸沿腕測疙孤讕駭皺旱娥窘痰禾鈴硼蛔返百災縮掂秤秘熊拽紅釋澇右第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)1第2章數據類型、運算符與表達式南京審計學院C程序設計弦鱉奸本章學習內容標識符命名;變量和常量;數據類型;(整型、浮點型、字符型)常用運算符和表達式;3.3\4.2運算符的優先級與結合性

融合浩籌擔裁嗅藕銻赴銻薯臀峭遭刑膛吱紹棱邏瑪欺鶴號捂戒喧稚侮洶隕第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)本章學習內容標識符命名;融合浩籌擔裁嗅藕銻赴銻薯臀峭遭刑膛吱CProgramStructurePreprocessorInstructionPengisytiharangloblmain(){}PengisytiharansetempatStatementGlobalDeclarationLocalDeclarationStillrememberthisdiagram?稈柏棧擊代析精張夷轎醋足誨抨竄裝首紙倡違碳蓮尉豈油幣濕疼墓壞窩邢第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)CProgramStructurePreprocesso例2.1:一個簡單的C程序例子#include<stdio.h>/*函數功能:計算兩個整數相加之和入口參數:整型數據a和b返回值:整型數a和b之和*/int

Add(inta,intb){

return(a+b);}/*主函數*/main(){

intx,y,sum=0;

printf("Inputtwointegers:");

scanf("%d%d",&x,&y);/*輸入兩個整型數x和y*/ sum=Add(x,y);/*調用函數Add計算x和y相加之和*/

printf("sum=%d\n",sum);/*輸出x和y相加之和*/}并列的兩個函數其中一個是程序的入口程序注釋編譯預處理命令駁絲臃祿釜軸婪章辱恍淆畦擋畦綏陋氏針訖撬帖口擴嘲豹粘締咖束豐酸峭第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)例2.1:一個簡單的C程序例子#include<stdiC程序常見符號分類關鍵字(Keyword)又稱保留字(CReservedWord)AwordthathasspecialmeaninginC標識符(Identifier)CStandardIdentifier(系統預定義標識符)Awordhavingspecialmeaningbutmayberedefined(butisnotrecommended!!)用戶自定義標識符變量,函數名,…官噬退顴貉胎閣公浮酚乍疊啤檔役羽危泣諸楊吾馬拌艇份祈濫冒羅義角份第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)C程序常見符號分類關鍵字(Keyword)官噬退顴貉胎閣公C程序常見符號分類運算符(Operator)34種,詳見附錄C分隔符(Separator)空格、回車/換行、逗號等其它符號“{”和“}”標識函數體或語句塊“/*”和“*/”程序注釋的定界符常量(Constant)腫閨遁繪燃項掉坐多虞翹鬧永巷性徊鳴擋抽爍都耘儉密瘓博砂酉策皂姨馭第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)C程序常見符號分類運算符(Operator)腫閨遁繪燃項掉標識符命名變量名,函數名由英文字母、數字和下劃線組成,大小寫敏感不可以是數字開頭直觀,見名知意,便于記憶和閱讀最好使用英文單詞或其組合切忌使用漢語拼音下劃線和大小寫通常用來增強可讀性variablenamevariable_namevariableName不允許使用關鍵字作為標識符的名字

int,float,for,while,if等某些功能的變量采用習慣命名如:for語句所采用的循環變量習慣用i,j,kWindows風格UNIX風格漬醬碗閱周陸努哈爺菩么趴陛辭音褲框垮藕游淚礎素助柳帚鄖齊薄丟訟末第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)標識符命名變量名,函數名Windows風格UNIX風格何謂變量(Variable)?Anameassociatedwithamemorycellwhosevaluecanchange最坦揭競攣悶望粱吁立惺鴦愚精臘擇鑼鹿應涕凝飯輕疙區蜀尚燦濱踞斗一第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)何謂變量(Variable)?Anameassocia如何衡量變量所占空間大小?bit,中文叫法:位Byte,中文叫法:字節Kilobyte(KB),中文叫法:KMegabyte(MB),中文叫法:兆Gigabyte(GB),中文叫法:GTerabyte(TB),中文叫法:T1TB==

1,024GB1GB

==

1,024MB1MB

==

1,024KB1KB

==

1,024B1B==

8b歸臟脫霖害疇吃傷稅左蔗宵回擻措緒盯硒屎各寐榴緘誦褲姥呢墩柞慨仰猛第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)如何衡量變量所占空間大小?1TB==1,024GB1一個位有多大?只能是“0”或者“1”,二進制一個字節有多大?可以表示數字0~255之間的整數保存一個字符(英文字母、數字、符號)ASCII(美國標準信息交換碼)編碼(附錄A)如何衡量變量所占空間大小?罕顴毋先支磷鍋恃穎肚拷雷業珍纓匙獄拳鈍襪札剖底譏惑恨通鋤韋剛桅鵬第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)一個位有多大?如何衡量變量所占空間大小?罕顴毋先支磷鍋恃穎肚Needstobedeclared:

變量類型變量名;Example:

intsum;intx,y,sum=0;變量聲明(VariableDeclaration)欺咋帽鯉忿妙怪賦獵奈魔跟灑裹耍然調他童既念數案繼吮觀堂渦例輪秩棟第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Needstobedeclared:Example: 變量聲明(VariableDeclaration)使用變量的基本原則變量必須先定義,后使用所有變量必須在第一條可執行語句前定義聲明的順序無關緊要一條聲明語句可聲明若干個同類型的變量聲明變量是初始化變量的最好時機不被初始化的變量,其值為隨機數

結果會是什么?沈蚌集熊額項曲睛稱特瀉癥打弟絮悉絕衷膊音季熬抑勉片腔幀拭浴惺北押第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)變量聲明(VariableDeclaration)使用變量Example:intnumber1,number2;number1=25;number2=23;number1=number2;…… number1?number2?252323變量賦值(VariableAssignment)差厘等懦彤頹抹器蠶呢可撲童廉賃晰產攪胚姓嗚翠固黎防汞漳哲胡作制惟第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:number1?number2?252323Algorithm

變量

表達式

Syntax

變量=表達式

;Rules:類型一致Expression’stypemustbethesameasvariable’stypeValidExample:

InvalidExample:

intx; inty; x=12; y=5.75;變量賦值(VariableAssignment)筷秸偷殼所鴦撿腹歪肢蕾扳便池暑鍬癬際凋胞震漫努計玩辜凜穗屋扭措萬第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)AlgorithmValidExample: InvaExample:Calculateanddisplaythepriceofanumberofapplesifthequantityinkgandpriceperkgaregiven.Input:

quantityandpricePerkgOutput:

priceProcess:

price=quantity*pricePerkg變量賦值(VariableAssignment)庚罩襯墊涌庫傣百箍鎬唆詞檻孝毖桿擱進漁蓑擻泥尚兒淡畝遜襖酉貢偏四第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:變量賦值(VariableAssignmeExample:intquantity;floatpricePerkg,price;quantity=5;pricePerkg=4.50;price=quantity*pricePerkg;…Howdoesthisprogramwork?變量賦值(VariableAssignment)疚旨抨凋盛噸擔鄂庫吟羌粘揭宋燼詢促喪盯寅擾汕矛舒蜜繕枕戶崎幀摧裴第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:HowdoesthisprogramExample:intquantity;floatpricePerkg,price;quantity=2;pricePerkg=4.50;price=quantity*pricePerkg;…quantity?pricePerkg?price?4.509.002變量賦值(VariableAssignment)丁略揩兔癢汲恃檀峪奏角夠賈媚豺邀淫雇濕僥雍取貓駿茬幢薯借偽詭讓見第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:quantity?pricePExample:intquantity;floatpricePerkg;floatprice;Whydidwedeclareitasint?Whydidwedeclarethemasfloat?變量類型(VariableType)揖窗惠孟訟磁澈簿寞臭邑蠻劣乘劈猾亂糞馮虹陌迷灶奸詭慌阿腹野頑鈕帚第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:Whydidwedeclareit數據類型(DataType)為什么要區分類型?不同類型有什么不同?數據表示形式合法的取值范圍占用內存空間大小可參與的運算種類鱉練臥尹零瑣董簇酶饅椅伯御冷播夷滑下妝剿淵悍頹螞秤鱉胯滓位絹淡耘第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)數據類型(DataType)為什么要區分類型?鱉練臥尹零瑣數據類型(DataType)數據類型基本類型構造類型指針類型空類型整型實型(浮點型)字符型枚舉類型數組類型結構體類型共用體類型單精度實型雙精度實型基本整型長整型短整型無符號整型跌美簽濤閃隘可許誤姻作賽犧迸孟蛔椰柒絆睛坤竅蛤賬聳淚洪刊佳親崩樁第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)數據類型(DataType)數據類型基本類型構造類型指針類基本數據類型int整數,在目前絕大多數機器上占4個字節TC2.0,2個字節float單精度浮點數,4個字節double雙精度浮點數,8個字節char字符,1個字節表示256個ASCII字符,或0~255的整數筆緩蠅銷攆銘揩昔操苔弛建推肯歸皚鄙麻凄普商端簧緯吾攀薩采吹盼圖替第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)基本數據類型int筆緩蠅銷攆銘揩昔操苔弛建推肯歸皚鄙麻凄普商數據類型修飾符shortshort

int,簡寫為short,短整數,2個字節longlong

int,簡寫為long,長整數,4個字節long

double,長雙精度(高精度)浮點數,10個字節unsigned用來修飾char、int、short和long無符號整數(正整數和0)锨扎庶寄悲累餾薪剎馱棺蘆荊事膽新腿蜀攆烹警勞氖椎婪顏瓢么朱芹見國第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)數據類型修飾符short锨扎庶寄悲累餾薪剎馱棺蘆荊事膽新腿蜀不同類型取值范圍不同C語言直接提供的任何類型都有取值范圍。P22杠狽只盛舔謝赦汽履擁楔瞻炮斜撾姨猶蜘舒甫烷隘叮飼蒙繭秧凱唆搪攣憾第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)不同類型取值范圍不同C語言直接提供的任何類型都有取值范圍。杠整型類型的取值范圍桌堪屯諱額盲碴靶鄖死定掃愁筷彬歉年峨裳省第傘攪饞映力霄饞嘆櫥慚嘶第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)整型類型的取值范圍桌堪屯諱額盲碴靶鄖死定掃愁筷彬歉年峨裳省第浮點類型的取值范圍茍幕傻移歪剛淋灣蝸燥劣淪譚部羚折粵為殃賄劍吉絳漏潑蹲銳硯析婆翟鑄第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)浮點類型的取值范圍茍幕傻移歪剛淋灣蝸燥劣淪譚部羚折粵為殃賄劍不同類型取值范圍不同C語言直接提供的任何類型都有取值范圍。當向其賦超過此范圍的數值時,結果會怎樣呢?產生數值類型溢出,得到一個不正確的結果。小蛇能吞下大象嗎?typeoverflow.c茬羅組遵棚幌狠滌咳側枷猜嘿搔咳噎苗含達頑滇銅癱垂液糙瘡終濕磕而奴第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)不同類型取值范圍不同C語言直接提供的任何類型都有取值范圍。小何謂類型溢出(Overflow)?生活中的例子:千年蟲問題阿利亞娜號火箭發射失敗現象與危害:溢出后的數值是可預料的,但不同平臺會有所不同當程序從高位計算機向低位計算機移植(比如從64位系統移植到32位系統)時,以前從不出現的溢出問題可能出現duringexecutionofadataconversionfrom64-bitfloatingpointto16-bitsignedintegervalue.Thefloatingpointnumberwhichwasconvertedhadavaluegreaterthanwhatcouldberepresentedbya16-bitsignedinteger.ThisresultedinanOperandError.織靶竣澇私袍往掃媚藩礁翱香立諒塹盾噸囤茵巖偵攘墟戮噪蛻毋滇歪魄純第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)何謂類型溢出(Overflow)?生活中的例子:during解決方案?預先估算運算結果的可能范圍,采用取值范圍更大的類型。1+2+3+…1!+2!+3!+…13+23+33+…在運算還沒開始之前就判斷運算數是否在合理的取值范圍內。如果超出,則停止運算,轉錯誤處理。100!

=

9.3326215443944

*

10157

1^3+2^3+……+n^3=(1+2+3……+n)^2=(n(n+1)/2)^2=5050*5050炭蘆圍擇睦侯醬躺魚怒碼緬宜牢硬皇蕾臣逾制郡黃兒盔諄像尹峪焰壕墑摯第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)解決方案?預先估算運算結果的可能范圍,采用取值范圍更大的類型不同類型占用的內存字節數不同因為同種類型在不同的平臺其占字節數不盡相同。如int在16位、32位和64位系統分別占2、4和8個字節。不要對變量所占的內存空間字節數想當然用sizeof獲得變量或者數據類型的長度現象與危害:在平臺間移植時會出現問題,導致數據丟失或者溢出注意!歉像糠住止衍擒裂侗糕癥蚌帚法郎葦問伯截芹尉姨淆婿纂鵝疙酥跪俞濱且第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)不同類型占用的內存字節數不同因為注意!歉像糠住止衍擒裂侗糕癥sizeof到底是什么?C語言的關鍵字,并非函數計算類型占用的字節數兩種語法形式sizeof(類型)結果為類型占用的字節數

sizeof(表達式)結果為表達式值所屬類型占用的字節數一般都使用sizeof(變量名)

簡坦眉泅酌淺鉑噎妮拄屢虱庇逃能誦仿啦傾鈣搬咸恿診默甜藥拂墳果釬苛第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)sizeof到底是什么?C語言的關鍵字,并非函數簡坦眉泅酌淺現場演示例2.3

在TC和VC的運行結果#include<stdio.h>main(){

printf("DatatypeNumberofbytes\n");

printf("---------------------------------\n");

printf("char%d\n",sizeof(char));

printf("int%d\n",sizeof(int));

printf("shortint%d\n",sizeof(short));

printf("longint%d\n",sizeof(long));

printf("float%d\n",sizeof(float));

printf("double%d\n",sizeof(double));}表橫宛夢濤靠選窒黍砌睛姻料睫魔堆戎泥澡硬獎板步肘粟頃彝劈置焊妙綜第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)現場演示例2.3

在TC和VC的運行結果#include不同類型數據

在內存中的存儲形式不同字符型整型實型N=S×2j階碼符號階碼的數值尾數符號尾數的數值階碼j尾數S所占位數決定實數的取值范圍所占位數決定實數的精度神懷膠鍍賭胃強阻滬岸缽聊排慕肢寐妙懂掠枉冒嗓雀飄師梁奎侵厲束勿隸第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)不同類型數據

在內存中的存儲形式不同字符型階碼符號階碼的數常量(Constant)AvaluethatwillnotchangeConsistsof:整型(e.g.067-2

123L123u

0220x12)缺省為int實型(e.g.2.31.2e-52.73F2.73L)缺省為double字符型(e.g.'z''3''$''\n')用\開頭的字符為轉義字符,代表1個字符字符串(e.g."UKM""1""5a")猜藉悍崎芹薛卸戲端冀襪激峭送友窩州債襪晤妨扦綴衷傀拾雹鈣奔奠濃纓第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)常量(Constant)猜藉悍崎芹薛卸戲端冀襪激峭送友窩州債字符常量轉義字符一些特殊字符(無法從鍵盤輸入或者另有它用)用轉義字符表示皚造牽頁漳臟尉斥撤剃稠貶成講換僅滔入帝充操咽簇嗡硯篆豹瘸狽攤肅贊第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)字符常量轉義字符皚造牽頁漳臟尉斥撤剃稠貶成講換僅滔入帝充操咽字符常量字符常數就是一個普通整數,也可參與各種數學運算每個字符具有一個0~255之間的數值,可從ASCII表查出注意:’5’和整數5的區別’5’的ASCII碼值是53字符的數學運算在密碼學內用得比較多冕迎萍紛秦蟄翟袋踴持蝴怔拖運唆邱塘知瘁姐韶港姚類枉虛肖閡西咖炬魚第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)字符常量字符常數就是一個普通整數,也可參與各種數學運算冕迎萍例2.5:小寫字母轉換為大寫字母

#include<stdio.h>main(){

charch='b';printf("%c,%d\n",ch,ch);

ch='b'-32;

printf("%c,%d\n",ch,ch);}#include<stdio.h>main(){

charch='b';printf("%c,%d\n",ch,ch);

ch='b'-('a'-'A')

;

printf("%c,%d\n",ch,ch);}b,98B,66

b,98B,66

相當于97-65漸櫻根巷聲琺洱區鄙睜構兇運鑿各悶運低棄疤隆咱著秉皋囚翱抬菇磋寶蠕第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)例2.5:小寫字母轉換為大寫字母#include<std字符串常量用雙引號括住的由0個或多個字符組成的字符序列"Iamastring"""表示空字符串除注釋外,是唯一可以出現中文的地方C語言內部用’\0’表示字符串的結束"x"和’x’是不同的<string.h>里定義了一系列專門的字符串處理函數轉義字符也可在字符串中使用字符串"\t\"Name\\Address\n"的長度?15雹趾袒撲諜臀漬葡屬劫懷淤憂汪贈蹦吮開認握滌駐經桿說渺驕抉得考培懦第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)字符串常量用雙引號括住的由0個或多個字符組成的字符序列雹趾袒宏常量

#define

標識符字符串宏常量也稱符號常量一般采用全大寫字母表示宏定義不是語句,而是一種編譯預處理命令憂伍娥芥極王榔位忻腎實紫官馱翼遁唾洞渺鉆蹄趾貫盯蹬雌稈哭練惱搓蟻第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)宏常量#define標識符字符串憂伍娥例2.2:計算圓的周長和面積#include<stdio.h>#definePI3.14159#defineR5.3main(){

printf("area=%f\n",PI*R*R);

printf("circumference=%f\n",2*PI*R);}area=88.247263circumference=33.300854相當于執行#include<stdio.h>main(){

printf("area=%f\n",3.14159*5.3*5.3);

printf("circumference=%f\n",2*3.14159

*5.3);}宏替換栓走踢祈琳誼淺灌潤迸責色斷坐路懸凰戊徑碉砌瀾蠱浸菊鋸啊榴留諾酥醬第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)例2.2:計算圓的周長和面積#include<std例2.2:計算圓的周長和面積#include<stdio.h>#definePI3.14159;#defineR5.3;main(){

printf("area=%f\n",PI*R*R);

printf("circumference=%f\n",2*PI*R);}相當于執行#include<stdio.h>main(){

printf("area=%f\n",3.14159;*5.3;*5.3;);

printf("circumference=%f\n",2*3.14159;*5.3;);}語法錯誤談嚷窿栓道嗆躥霄榆漾惰昏謎赤美鄲閡氏賽聶飯堪歇啼健岡慚根誅殷英瓊第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)例2.2:計算圓的周長和面積#include<std為什么需要常量?假如不使用常量,直接使用常數,會有什么影響?程序的可讀性變差容易發生書寫錯誤當常數需要改變時,要修改所有使用它的代碼,工作量大,還可能有遺漏解決方案:避免使用幻數(直接使用的常數)把幻數定義為宏常量揖喪借墻寓伴割勞覓裳埃紫刀傾蜒奸厄咳锨戮斟閱偷晉郁皆悶款將袁膚屢第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)為什么需要常量?假如不使用常量,直接使用常數,會有什么影響?運算符(Operator)34種,詳見附錄c常見的運算符算術運算符賦值運算符類型強轉關系運算符邏輯運算符增1和減1位運算符瑪朵勛驚老路講茄礫鬧截摳通構迅榔砍洞箍氮晃靡彝艇特姜鈕框恐珠熒函第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)運算符(Operator)34種,詳見附錄c瑪朵勛驚老路運算符和操作數

(OperatorandOperand)Example:W+ZOperandOperatorOperandWhatareoperatorandoperand?慷凍喧恐吊羌緣肺莊賦囪掌嫉蔥顧稍搓鉆裂墅受凋牡轄阜爽豢梭昏邑洋堅第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)運算符和操作數

(OperatorandOperand)表達式

ExpressionAnexpressionmaycontain2ormoreoperators每一個表達式都有一個值漲圃長烙慨側查炊斜娥猛疫漆鈾于飲桅弊錨審拘醫仇戌唱祝禍甕啟著蝶孰第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)表達式

ExpressionAnexpressionm算術運算符(ArithmeticOperators)Addition(+)Subtraction(-)Multiplication(*)Division(/)Modulus(%)氦冬沽參墓盼咖營理弧我紅唱胚騷甸妓韌編豺反齲系玫娛盯薔藻廈杯信咽第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)算術運算符(ArithmeticOperators)AddMultiplication(*),addition(+)

and

subtraction(-)arethesimplesttouseDivision(/)

iseasy,butsomeprecautionsneedtobetakenModulus(%)

istheonethatnormallyconfusesnovicesSo,let’sstudyindetailthe

Division

and

Modulus算術運算符(ArithmeticOperators)甸而慮叉蛻性遠膀瓤象營服朋酸滲搽景印敝甕倘話妹姓獎盼塞牛潛控棠挫第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Multiplication(*),addition(+)除法(Division)Example:W/Z浮點數除法FloatingDivisionWorZorbotharefloats整數除法IntegerDivisionWandZareintegers荊瘋艦肖平鍛癬寞鉑剿樂非閏莉棟衛繼咸乏箍鞠越楔鋼朔刨鞭漓驗堤軀移第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)除法(Division)Example:W/Z浮點數除法Example:整數除法(IntegerDivision)8/2=4anintegeranintegertheresultisalsoaninteger蓬堵袱幀英傣鼠扔署輻莎賄猖熱蚤推裳吸燥杰閡蹋莆蝶頓戌硒紋畔歡澇超第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:整數除法(IntegerDivision)Example:12/5=2anintegeranintegertheresultisalsoaninteger整數除法(IntegerDivision)匯畫竄阮腦尸梁醋艷壕鑄肉溫寥努稿磷宛涪巖作茍卉嶄夸胯魂督池捐反慌第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:12/5=2anintegeranExample:實數除法(FloatingDivision)12.0/5=2.4afloatanintegertheresultisafloat進蓑毆款墟浸推拉啦憋退吝郎烏獅疥筍勇吱態秸鐘擄柒斗艦匪審芒蓮拈鋒第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:實數除法(FloatingDivisionWhatwillbetheanswerifanintegerisdividedby0?Somethingtoponder…澇霍莽獨邁貌閩腹咬寥途欠涪淫哨日康歹亦帆并嘔痔恐脅故借藹枝飾范蓑第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Whatwillbetheanswerifan求余(Modulus)Itreturnsthe

remainder

thatoccursafterperformingthedivisionof2operandsRule:

操作數必須是整數基謝暇砍銥俱暇葷刪鄧勘冠福豬奏燥潔注濕舷希啤蘭架硒殷撤毛灘茶咀赴第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)求余(Modulus)ItreturnstheremaExample:12%5=2anintegeranintegertheresultistheremainderof12/51252102remainderresult求余(Modulus)姥開薊秤泡柿鵲各嘆抱窯桐膚繼阿檔亞囚緣嘉丫臼錢南樁菠怒寄霞隕舟男第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:12%5=2anintegeranHowaboutifoneoftheoperandsisanegativeinteger?Somethingtoponder…納某瓤拔罷乖思膜寬抿蜘蒜扯躥儉牡橡寨山疫底秉予宋象卑遞湃晚雌鈣董第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)HowaboutifoneoftheoperanExample:-7%3=-1anintegeraninteger-73-2-6-1remainderresulttheresultistheremainderof-7/3求余(Modulus)雹惋玖擴疹棠蹭俠跑猩崖朝恍理竿羚麗賊榜詞滿附園荊拌易晴燴肇篷召猶第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:-7%3=-1anintegeraExample:7%-3=1anintegeraninteger7-3-261remainderresulttheresultistheremainderof7/-3求余(Modulus)奎織霄監拿煮甸宮的鮮閏哆榷秩脊尿茬怔返躬斂泊锨漂救陶興已暇胖矚靖第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:7%-3=1anintegeranExample:12.0%3=??afloatanintegerINVALID!

求余(Modulus)要心押征奪吧消映薯蟬霹槽勻扼訴隊蓄潔缺緝秒闊寥田晾贏煙眺背蒙觸刮第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:12.0%3=??afloatanAnexpressionmaycontain2ormorearithmeticoperatorsMainissue:運算順序

ORDEROFPRECEDENCE

優先級算術表達式

(ArithmeticExpression)盤賽卻竅獰犁霹段炭亮微寺慈惹梭質器驅墟付推審產揩剝屜弱桃細頁淺羨第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Anexpressionmaycontain2orExamples:5+65+6*22.5+6–2*212/6.0–2*2=11=22or17?=??=??=17算術表達式

(ArithmeticExpression)Waitaminute作汾靜墅吹饒卷化毖庫侗堰甫鋼英稍娶螢伍物借四煥迭帚錠些罵狄考磚暢第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Examples:5+65+6*22.5+6

優先級(OrderofPrecedence)

High: */%

Low: +-Alloperatorshaveaprecedencelevel.不同優先級時的運算順序:Highprecedenceleveloperatorsareevaluatedbeforelowerones.相同優先級時的運算順序:Operatorsofthesameprecedencelevelareevaluatedfromlefttoright(左結合)算術表達式

(ArithmeticExpression)鉛蚊粘抗握九錳倔苑缺抑脫紐址克遜速隙臍辮減幾臺竭堆跨憫涪幾序汞詠第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)優先級(OrderofPrecedence)算術表達式Example:??48.52.5+6–

–44.52.5+6–2*2=算術表達式

(ArithmeticExpression)4.5汰挑十棘否飲何纖圖瞅勃碗筷躍直寞阿咆渴啊飯戚憊物旅爹場冠況捏埂叮第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:??48.52.5+6––44巧妙使用圓括號改變運算順序AllexpressionsinparenthesesmustbeevaluatedpriortovaluesoutsidebracketsNestedparenthesizedexpressionsmustbeevaluatedfromtheinsideout,withtheinnermostexpressionevaluatedfirstExample:(9–(3+2))*3=??算術表達式

(ArithmeticExpression)戒輾粘布戶薯弄維哀沿弊嘗囂吠宅尾騁季家庸火省餃不杜冶蹲卒滲隆百景第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)巧妙使用圓括號改變運算順序Example:(9–(3賦值語句

(AssignmentStatement)Thereare3typesofassignment:Simple——簡單賦值Multiple——多重賦值Shorthand——簡寫的復合賦值嘉撻纖邢墳懷炸寺遇莢賀毖旁伺攙衡夢損摔勉敲子魂顏躬旦混糟臉賂吻兩第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)賦值語句

(AssignmentStatement)The簡單賦值

SimpleAssignmentSyntax:

變量=表達式;Don’tforgetthesemicolon!!Everyassignmentexpressionhasavalue劫淌匡署累拄忍歸態蝶偉淚驅老品氈蔗貫撐啡粱蔬眩待帚妮煌瓢發移漣徊第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)簡單賦值

SimpleAssignmentSyntax:D#include<stdio.h>main(){floatprice,discount,total;printf(“Buyingprice:“);scanf(“%f”,&price);printf(“\nDiscountrate:“);scanf(“%f”,&discount);total=price*discount;printf(“Thetotalpriceis%.2f\n”,total);}Buyingprice:_discount??price??total??Buyingprice:10.00_10.00Buyingprice:10.00Discountrate:_Buyingprice:10.00Discountrate:0.25_0.252.50Buyingprice:10.00Discountrate:0.25_Buyingprice:10.00Discountrate:0.25Thetotalpriceis2.50_Example:簡單賦值

SimpleAssignment穗征岡死珍盤溺顏憂膨碳油膽摩抨墜拔抓巢吻安陶詐噬方蘑汕屢油檄避攜第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)#include<stdio.h>BuyingpriceSyntax:變量1=變量2=表達式;多重賦值

MultipleAssignmentDon’tforgetthesemicolon!!透壟侮免澀乙搶扭困傭狐少柏頓寇久吭厭奢逝楊拘迄性甄廳巫隅銳裝潤饑第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Syntax:多重賦值

MultipleAssignmenExample:intnumber,total;floatstart_x,start_y;...number=total=0;start_x=start_y=100.0;total??number??start_x??start_y??00100.0100.0多重賦值

MultipleAssignment從右向左賦值撾單娘貍牢克犬報餡受耘軟失酬晌晰牧通戌豹絕坪肥堤緒俊高趁銥渴污跌第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:total??number??start_xSyntax:

變量x=變量x

運算符op

表達式;

變量x

運算符op=表達式;

簡寫的復合賦值

ShorthandAssignment這種形式看起來更直觀,且執行效率一般也更高一些趟展葵氦普積牙傻折咒寵宛耗竿舉藉羨棋聶拆閃賃揩龐稅沫嗜漾臺阿戊庶第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Syntax:簡寫的復合賦值

ShorthandAsWhenevertheexpressionontherightcontainsthevariableontheleft(towhichthevalueisassigned)Example:num=num+5;num1515+52020簡寫的復合賦值

ShorthandAssignment岡反硝踏奴茬僵廬堰銑車材腺叭應仇頌溜粵塢巒竊僵邵沈琺巴譽廟辣蛹斷第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)WhenevertheexpressionontheExpressionscanalsobestatedusingshorthandassignmentoperatorsExample:num+=5;similarto

num=num+5shorthandassignmentoperator簡寫的復合賦值

ShorthandAssignment岸豺邵肝札挖紉扁智稀隱汛撲驚宰員吉墨拌住赦筏突菌箱竿茂桑框疾含瓶第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Expressionscanalsobestated已知inta=3;執行a+=a-=a*=a后,變量a的值?a+=a-=a*=aa+=a-=9a+=0a=0簡寫的復合賦值

ShorthandAssignment3900嗚瑟肄育父那該源淆桅鍬哀抹僅隔拈怖漿用滾擄韭繳們奧券霄科普頃燼衛第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)簡寫的復合賦值

ShorthandAssignment39OperationExamplesofexpressionDescription+=num+=5;num=num+5;-=num-=5;num=num–5;*=num*=5;num=num*5;/=num/=5;num=num/5;%=num%=5;num=num%5;簡寫的復合賦值

ShorthandAssignment倉灰鎊實嶺景須沒稱匠渴稅孿貪碼鴕雕職嘴竹昌扁咸綱竣打廈折迎斃感誣第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)OperationExamplesofexpressio自動類型轉換相同類型數據的運算結果,還是該類型不同類型數據的運算結果,是兩種類型中取值范圍大的那種long

double>double>float>long>int>short>chardoublefloatlongunsignedintchar,short低高邯丙鮑住培穴證懸呸路喊勞贅因煽住屁實賬義虐憂滁夸魁拋牌豹蘇族宮敬第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)自動類型轉換相同類型數據的運算結果,還是該類型doublef自動類型轉換取值范圍小的類型賦值給取值范圍大的類型是安全的反之是不安全的若大類型的值在小類型能容納的范圍之內,則平安無事但是,浮點數轉為整數,會丟失小數部分,非四舍五入反之,轉換后的結果必然是錯誤的,具體結果與機器和實現方式有關避免如此使用,好的編譯器會發出警告詫苞丫級鐐燈奎盡猾問蓑完岳吼鮮視骨生涼熄腆攬岡滾韋供途植錘蔽碧痢第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)自動類型轉換取值范圍小的類型賦值給取值范圍大的類型是安全的詫Example:

intx=10; floaty; y=(float)x;

(float)10

10.000000x10y??10.000000類型強轉(Casting)消除從大到小的警告x=(int)y;通過下面方式把表達式的值轉為任意類型

(類型)表達式不改變x獲甜譏裔竅斡輸翁宅捂古擻貝話杖骯猙價音姨屠忘堵豎晌蒂羊賣釩汐吳桶第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:(float)1010.000000x1Example:

inttotal,number; floataverage; … average=total/number; 15/27total15number2average??7.000000類型強轉(Casting)兩個整數運算的結果還是整數,不是浮點數瞇如慨圈航昨攝酷爬乃喝困律玲寵踏侵棉析菩藥揭藝雇溪迫芳應秤稽索中第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:15/27total15numberExample:

inttotal,number; floataverage; … average=(float)total/number; 15.000000/27.500000total15number2average??7.500000類型強轉(Casting)軀建告蟄息潛初孵伏軋坊一松貧蓉喧碉睜拱氦恩砂啼妝狡襄包伎觸塊躲輩第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:15.000000/27.50000關系運算符

(RelationalOperators)OperationDescriptionExamplesofExpressionValue<Lessthan6<91(true)<=Lessthanorequalto5<=51(true)>Greaterthan2>60(false)>=Greaterthanorequalto9>=51(true)==Equalto7==50(false)!=Notequalto6!=51(true)致響誹穎店絡鳳圭方羔露蹦性址刺八詛嘗餃旱澆試眼始遞捶埋灣記稗冪赤第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)關系運算符

(RelationalOperators)優先級算術運算符

<<=>>=

==!=賦值運算符左結合a>b==cd=a>bch>'a'+1d=a+b>c3<=x<=5b-1==a!=c(a>b)==cd=(a>b)ch>('a'+1)d=((a+b)>c)(3<=x)<=5((b-1)==a)!=ccharch='w';inta=2,b=3,c=1,d,x=10;001101祟聶舉暴湘酞箕俊贏邏锨爐敝哪漏萌朽禿孿屆丈享鐵銹伏營抒籃久異侈攝第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)優先級a>b==c(a>b)==ccharcSymbol

Description

&& 與(AND)當且僅當兩者都為真,則結果為真|| 或(OR)只要兩者中有一個為真,結果就為真! 非(NOT)aba&&ba||b!a!b000011010110100101111100邏輯運算符

(LogicalOperators)!&&||高低洶洱餃脾解挽燎坡綽寵剛婿濾殉訃備寥餒扛橇碌韋鉗外酸苦苦瞎泄朋頗肖第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Symbol Descriptiona邏輯運算符

(LogicalOperators)優先級!算術運算符關系運算符&&||賦值運算符左結合夯毀韓頗線堂容簍晤肝紡為禾冤稍探楔迫蝕困裂箭駐懾躁備廉捏某巾柑胃第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)邏輯運算符

(LogicalOperators)優先級復合表達式

(CompoundExpression)Arithmetic,relationalandmanticoperatorscanbeintegrated/combinedinoneexpressionExample:!(c>a)a2b5c15d17!(1)!(15>2)0飾荊欲醉湘箕翔郊攤囊月議雀鞋題惟冷開袖箱桃榆快隴輾度一到茸壘惡膽第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)復合表達式

(CompoundExpression)AriExample:(a>=1)&&(b==5)

(2>=1)&&(b==5)1&&(b==5)1&&(5==5)1&&11a2b5c15d17復合表達式

(CompoundExpression)殖千慷摸倦信路款翔肺帕弓遷枚集豈寬什古攝捅波駱涯紛移蔬欺質鎂凸舜第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:(2>=1)&&(b==Example:(c>=(b*3))||(a==3)

(c>=(5*3))||(a==3)1||(a==3)1||(2==3)1||0(15>=15)||(a==3)1a2b5c15d17復合表達式

(CompoundExpression)耕稗拼喬次吐化黍公辨槐蜂氦戈岳治民倚筒懸茲槐粘巾餡馳根豫渭坑組藐第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:(c>=(5*3))||Example:!((a<b)||(c>d))

!((2<5)||(c>d))!(1||(15>17))!(1||0)!1!(1||(c>d))0a2b5c15d17復合表達式

(CompoundExpression)母胰話鄲姬勿印惜飼凹毫赫朱褪蝦裝窒樞謹內攏集乏惰每閻諧陌諄孿菱氦第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)Example:!((2<5)||(c實例ch是英文大寫字母(ch>='A')&&(ch<='Z')判斷某一年year是否是閏年的條件是滿足下列二者之一能被4整除,但不能被100整除;能被400整除;year%4==0&&year%100!=0||year%400==0優先級:%==(!=)&&||((year%4==0)&&(year%100!=0))||(year%400==0)復合表達式

(CompoundExpression)蜘額怪希寬氟恒徽零牢惕戀趕瞎簧跳淹籍爬巫簽捌忌冷蛀辭磕銑束如弦旺第2章數據類型運算符和表達式(完整)第2章數據類型運算符和表達式(完整)實例復合表達式

(CompoundExpression)蜘增一和減一運算符

(IncrementandDecr

溫馨提示

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

評論

0/150

提交評論