版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計(jì)第2章基本數(shù)據(jù)類型、運(yùn)算符與表達(dá)式1問題:人類的語言書寫時(shí),不同國家有不同的要求,基本的如:有哪些數(shù)據(jù)是規(guī)定可用的,可進(jìn)行什么樣的運(yùn)算和加工?C中的數(shù)據(jù)和操作用字要求格式要求標(biāo)點(diǎn)要求
C語言作為一種計(jì)算機(jī)語言,在用于編程時(shí),C語言中對(duì)數(shù)據(jù)的類型,哪些操作運(yùn)算是合法的,都進(jìn)行了相關(guān)的規(guī)范和要求。引子2
本章要點(diǎn)第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式
本章難點(diǎn)
C語言的基本數(shù)據(jù)類型變量的定義、賦值、初始化及使用方法基本運(yùn)算符的運(yùn)算規(guī)則及優(yōu)先級(jí)別表達(dá)式的構(gòu)成規(guī)則和計(jì)算數(shù)據(jù)類型轉(zhuǎn)換的意義和實(shí)質(zhì)
數(shù)據(jù)類型的作用及注意事項(xiàng)自增、自減運(yùn)算符的使用運(yùn)算符優(yōu)先級(jí)別混合表達(dá)式運(yùn)算類型轉(zhuǎn)換及轉(zhuǎn)換過程中出現(xiàn)的誤差32.12.22.32.42.5C語言的數(shù)據(jù)類型常量與變量整型數(shù)據(jù)實(shí)型數(shù)據(jù)字符型數(shù)據(jù)本章主要內(nèi)容42.62.72.82.92.10算術(shù)運(yùn)算符與算術(shù)表達(dá)式賦值運(yùn)算符與賦值表達(dá)式逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式位運(yùn)算符數(shù)據(jù)類型轉(zhuǎn)換與計(jì)算類型長度運(yùn)算符本章主要內(nèi)容5數(shù)據(jù)類型總表數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void字符類型char枚舉類型整型實(shí)型單精度型float雙精度型double數(shù)組結(jié)構(gòu)體struct共用體union短整型short長整型long整型int數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍2.1C語言的數(shù)據(jù)類型不可再將其分解成其他類型構(gòu)造類型數(shù)據(jù)可以分解成若干個(gè)"成員"或"元素",各"成員"的類型可以相同,也可以不同,可以是基本數(shù)據(jù)類型,也可以是構(gòu)造類型。值用來表示某個(gè)量在內(nèi)存儲(chǔ)器中的地址函數(shù)類型說明了返回值的類型,但有些函數(shù)沒有返回值,這種函數(shù)類型定義為空類型(void)。62.12.22.32.42.5C語言的數(shù)據(jù)類型常量與變量整型數(shù)據(jù)實(shí)型數(shù)據(jù)字符型數(shù)據(jù)本章主要內(nèi)容7常量定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù))分類:字面常量:又稱直接常量整型常量:12、0、?3;實(shí)型常量:4.6、?1.23字符常量:'a'、'b'符號(hào)常量:8標(biāo)識(shí)符定義:標(biāo)識(shí)符是用戶自定義的一種字符序列,用于表示程序中需要辨認(rèn)的對(duì)象,比如變量、數(shù)組、函數(shù)等對(duì)象的名字。分類:關(guān)鍵字、預(yù)定義標(biāo)識(shí)符和用戶標(biāo)識(shí)符
命名原則:由字母、數(shù)字、下劃線組成的一串符號(hào),但必修以英文字母或下劃線開頭標(biāo)識(shí)符區(qū)分大小寫不能使用關(guān)鍵字作為用戶標(biāo)識(shí)符見名知意建議用戶標(biāo)識(shí)符不要與預(yù)定義標(biāo)識(shí)符相同不宜混淆如l與I,o與0長度:VC6.0為255個(gè)字符例:判斷下列標(biāo)識(shí)符號(hào)合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123M.D.John3days#33char$123a>b2.2常量與變量由C語言規(guī)定的具有特定含義的標(biāo)識(shí)符,也稱為保留字關(guān)鍵字均為小寫,如int、while預(yù)定義標(biāo)識(shí)符在C語言中有特定的含義,如printf、include
9符號(hào)常量也稱宏常量定義:用一個(gè)標(biāo)識(shí)符代表一個(gè)常量。由C語言中的宏定義預(yù)處理命令來定義。定義格式:#define符號(hào)常量常量標(biāo)識(shí)符符號(hào)常量應(yīng)遵循標(biāo)識(shí)符的命名規(guī)則
習(xí)慣上用大寫字母常量可以是任何類型符號(hào)常量一經(jīng)定義,凡在源程序中使用該符號(hào)常量時(shí),都用其后指定的常量來替換。
例2.1符號(hào)常量的使用#include<stdio.h>#definePI3.14159#defineR5.3main(){printf("area=%f\n",PI*R*R); /*輸出圓面積*/printf("circumference=%f\n",2*PI*R); /*輸出圓周長*/}運(yùn)行結(jié)果:area=88.247263circumference=33.300854如#definePRICE30修改程序方便閱讀程序方便
10變量功能:用來保存程序運(yùn)行過程中的輸入數(shù)據(jù)、計(jì)算獲得的中間結(jié)果和最終結(jié)果。變量定義的一般格式:
類型標(biāo)識(shí)符變量名1,變量名2,…;變量初始化:定義時(shí)賦初值
變量的使用:先定義,后使用例:inta,b,c;floatdata;類型標(biāo)識(shí)符變量名[=初值];例:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;
intx=y=z=1;決定分配字節(jié)數(shù)和數(shù)的表示范圍例:intstudent;stadent=19;//Undefinedsymbol‘statent’infunctionmain
11inta=1,b=-3,c;…...地址abc4字節(jié)4字節(jié)4字節(jié)地址地址…...-3隨機(jī)數(shù)1編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元變量名與變量值12main(){inta,b=2;a=1;floatdata;data=(a+b)*1.2;printf(“data=%f\n”,data);}變量定義位置:變量定義語句可放在函數(shù)外,也可放在函數(shù)或復(fù)合語句內(nèi)。132.12.22.32.42.5C語言的數(shù)據(jù)類型常量與變量整型數(shù)據(jù)實(shí)型數(shù)據(jù)字符型數(shù)據(jù)本章主要內(nèi)容14三種形式:十進(jìn)制整數(shù):由數(shù)字0~9和正負(fù)號(hào)表示.(與日常使用的整數(shù)寫法一樣)如:0,-143,87八進(jìn)制整數(shù):由數(shù)字0開頭,后面是八進(jìn)制數(shù)字序列,數(shù)字取值范圍為0~7。如:00、?015、037十六進(jìn)制整數(shù):以0x或0X開頭的十六進(jìn)制數(shù)字序列,數(shù)字取值范圍為0~9、a~f或A~F。如:0x0、-0xABC、0X9fc2.3整型數(shù)據(jù)整型常量(整數(shù))是數(shù)字0,不是字母o
非法的八進(jìn)制數(shù):0539、02A、0?567
非法的十六進(jìn)制數(shù):0xfg、0x-89F
問題:0123=()100x123=()100Xff=()10問題:0123=()100x123=()100Xff=()108329125515整型變量的分類根據(jù)表達(dá)范圍: 基本整型(int)、短整型(shortint)長整型(longint) 標(biāo)準(zhǔn)C語言規(guī)定:shortint≤int≤long
int根據(jù)是否有符號(hào): 有符號(hào)型(signed)和無符號(hào)型(unsigned)若未指定是否有符號(hào),則隱含為有符號(hào)型(signed)2.3整型數(shù)據(jù)整型變量用來存放整數(shù),基本類型為int型如:int型數(shù)據(jù)是有符號(hào),而unsignedint是無符號(hào)的。16VC6.0中整型變量的所占字節(jié)數(shù)和數(shù)值范圍整型類型符占用字節(jié)數(shù)數(shù)值范圍[signed]int4?2147483648~2147483647即?231~(231?1)[signed]short[int]2?32768~32767即?215~(215?1)[signed]long[int]4?2147483648~2147483647即?231~(231?1)unsigned[int]40~4294967295即0~(232?1)unsignedshort[int]20~65535即0~(216?1)unsignedlong[int]40~4294967295即0~(232?1)17整型變量的定義在定義整型變量時(shí),某些類型修飾符可以省略
int
a,b,c; /*a,b,c為有符號(hào)整型變量*/longx,y; /*x,y為有符號(hào)長整型變量*/unsignedp,q; /*p,q為無符號(hào)整型變量*/在存儲(chǔ)正數(shù)時(shí),無符號(hào)整型變量的數(shù)值范圍比有符號(hào)整型變量的數(shù)值范圍擴(kuò)大一倍,如果能事先確定存儲(chǔ)的數(shù)是正整數(shù)(如年齡、庫存量、人數(shù)等),則可將變量定義為無符號(hào)類型,以充分利用變量的數(shù)值范圍。18整型數(shù)據(jù)在內(nèi)存中的存放形式在內(nèi)存中數(shù)據(jù)是以二進(jìn)制形式存放的有符號(hào)整型數(shù)無符號(hào)整型數(shù)0111111111111111signedshort(最大值)unsignedshort(最大值)1111111111111111符號(hào)位
012345678910111213141519實(shí)際上,整型數(shù)據(jù)是以補(bǔ)碼的形式來存儲(chǔ)的。正數(shù)的補(bǔ)碼負(fù)數(shù)的補(bǔ)碼
原碼相同將原碼的符號(hào)位保持不變,數(shù)值位逐位取反(變?yōu)榉创a)末位(即最右邊的那一位)加1求:-10的補(bǔ)碼
(1)寫出?10的原碼(2)數(shù)值位取反,得?10的反碼(3)末位加1,得?10的補(bǔ)碼10000000000010101111111111110101111111111111011020整型數(shù)據(jù)的溢出shortint型變量的最大允許值為32767,如果再加1,會(huì)出現(xiàn)什么情況?例2.2整型數(shù)據(jù)的溢出。#include<stdio.h>main(){shorta,b;a=32767;b=a+1;printf("%d,%d",a,b);}a和b的存儲(chǔ)格式:a0111111111111111b1000000000000000運(yùn)行結(jié)果為:32767,-3276821整型常量的類型整型常量也有基本整型、長整型、有符號(hào)和無符號(hào)之分編譯程序會(huì)根據(jù)數(shù)值大小分辨出常量是int還是longint類型。int型和long型數(shù)據(jù)均占4個(gè)字節(jié),在?2147483648~2147483647范圍內(nèi)的常量認(rèn)為是int型。需要明確地指出整數(shù)是否屬于longint類型,要在整數(shù)的末尾要加上字母L或l。
在表示無符號(hào)整型常量時(shí),需要在數(shù)值后添加字母U或u作為后綴,若是長整型無符號(hào)整型常量,則可以加后綴LU或lu,無論是基本整型數(shù)還是長整型數(shù),都被識(shí)別為有符號(hào)整數(shù)有符號(hào)整數(shù)無符號(hào)整型常量例:148、013、148L、0x38Alu、013L、0x38Au、0x16L、358U、0x16、358LU148、013、0x16148L013L0x16L0x38Au358U0x38Alu358LU222.12.22.32.42.5C語言的數(shù)據(jù)類型常量與變量整型數(shù)據(jù)實(shí)型數(shù)據(jù)字符型數(shù)據(jù)本章主要內(nèi)容23表示形式:小數(shù)形式:數(shù)學(xué)中常用的實(shí)數(shù)形式,由數(shù)字0~9和小數(shù)點(diǎn)組成。
(必須有小數(shù)點(diǎn))如:0.0、25.0、5.789、0.13、5.0、300.、?267.8230
指數(shù)形式:也稱為科學(xué)記數(shù)法,由尾數(shù)(可帶符號(hào))、階碼標(biāo)志“e”或“E”以及階碼(只能為整數(shù),可以帶符號(hào))組成。(字母e或E的前后及數(shù)字之間不能插入空格
)例如:2.1E5(等于2.1×105),3.7E-2(等于3.7×10?2),0.5E7(等于0.5×107),?2.8E-2(等于?2.8×10?2)2.4實(shí)型數(shù)據(jù)實(shí)型常量(浮點(diǎn)型常量、實(shí)數(shù)或浮點(diǎn)數(shù))345E7?553.-E32.7E無小數(shù)點(diǎn)
階碼標(biāo)志E之前無數(shù)字無階碼標(biāo)志負(fù)號(hào)位置不對(duì)
無階碼24float(單精度):占32位,提供7位有效數(shù)字double(雙精度):占64位,提供16位有效數(shù)字long
double(長雙精度型):占64位,提供16位有效數(shù)字2.4實(shí)型數(shù)據(jù)實(shí)型變量(浮點(diǎn)變量)floata=1.5,b=0.35,c; /*定義單精度實(shí)型變量a、b、c,并對(duì)a、b初始化*/doublex,y,z;/*定義雙精度實(shí)型變量x、y、z*/25實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式
無論表示形式是小數(shù)還是指數(shù),均以指數(shù)格式存儲(chǔ)
實(shí)數(shù)的存儲(chǔ)由符號(hào)位、指數(shù)(階碼)以及尾數(shù)(小數(shù))等三部分組成。
例如:實(shí)數(shù)31.4159
尾數(shù)指數(shù)+2314159符號(hào)位float:共占32位。1位符號(hào)位、8位指數(shù)和23位尾數(shù);double:占64位。1位符號(hào)位、11位指數(shù)和52位尾數(shù)。指數(shù)部分占的位數(shù)多,則表示的數(shù)值范圍大。尾數(shù)部分占的位數(shù)多,實(shí)型數(shù)據(jù)的有效數(shù)字就多,精度就高。尾數(shù)部分就是有效二進(jìn)制數(shù)字,經(jīng)過計(jì)算可換算成十進(jìn)制有效數(shù)字位數(shù)(近似值)。26實(shí)型變量的舍入誤差由于實(shí)型變量是用有限的存儲(chǔ)單元存儲(chǔ)的,因此提供的有效數(shù)字是有限的,往往會(huì)產(chǎn)生誤差。
在十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制時(shí),如果小數(shù)最后一位不是5,則轉(zhuǎn)換的二進(jìn)制小數(shù)往往是無限位,此時(shí)產(chǎn)生舍入誤差一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接進(jìn)行加或減時(shí),可能會(huì)“丟失”小的數(shù)。例2.3實(shí)型變量的舍入誤差。#include<stdio.h>main(){floata,b;a=123456.72e5;b=a+20;printf("a=%f\n",a);printf("b=%f\n",b);}本例程序運(yùn)行的結(jié)果是:a=12345671680.000000b=12345671680.00000027例4.5E1F、-4.5E-2F實(shí)型常量的類型默認(rèn)double型在實(shí)型常量后加字母f或F,認(rèn)為它是float型282.12.22.32.42.5C語言的數(shù)據(jù)類型常量與變量整型數(shù)據(jù)實(shí)型數(shù)據(jù)字符型數(shù)據(jù)本章主要內(nèi)容29定義:用單引號(hào)(’)括起來的一個(gè)字符。2.5字符型數(shù)據(jù)字符型常量如‘a(chǎn)’‘b’‘=’‘+’‘?’存儲(chǔ):字符常量占用一個(gè)字節(jié),具體存放的是該字符對(duì)應(yīng)的ASCII代碼值。如‘A’—65,‘a(chǎn)’—97,‘0’—48,‘1’—49可以進(jìn)行運(yùn)算例如:'a'+5、'A'?5、'1'+10102605930aaa字符常量的特點(diǎn):字符常量只能用單引號(hào)括起來,不能用雙引號(hào)或其他括號(hào)'abc'是非法的字符常量只能是單個(gè)字符C語言規(guī)定,字母是區(qū)分大小寫的,所以'a'和'A'是不同的字符常量31轉(zhuǎn)義字符一種特殊形式的字符常量——轉(zhuǎn)義字符某些控制字符(如回車符、換行符等)和一些ASCII字符卻無法使用字符常量進(jìn)行表示轉(zhuǎn)義字符以反斜線“\”開頭,后跟一個(gè)或幾個(gè)字符。<轉(zhuǎn)義字符及其含義:轉(zhuǎn)義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉(zhuǎn)義字符含義換行垂直制表回車響鈴單引號(hào)1~3位8進(jìn)制數(shù)代表的字符水平制表退格換頁反斜線雙引號(hào)1~2位16進(jìn)制數(shù)代表的字符如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------()例:‘A’-------’\101’-------’\x41’--------6532定義:用雙引號(hào)(“”)括起來的字符序列
字符串常量"CHINA","Cprogram","12365478"
轉(zhuǎn)義字符也可以出現(xiàn)在字符串"\\ABCD\\"、"\101\102\x34\x44"字符常量與字符串常量的區(qū)別字符常量由單引號(hào)括起來,字符串常量由雙引號(hào)括起來字符常量只能是單個(gè)字符,字符串常量可以為空字符串,也可以含1個(gè)或多個(gè)字符可以把一個(gè)字符常量賦予一個(gè)字符變量,C語言中沒有字符串變量,不能把一個(gè)字符串常量賦予一個(gè)字符串變量。但可以用一個(gè)字符數(shù)組來存放一個(gè)字符串常量字符常量占1個(gè)字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字符數(shù)加1,增加的一個(gè)字節(jié)由系統(tǒng)自動(dòng)存入字符"\0"(ASCII碼為0),作為字符串結(jié)束的標(biāo)志。33hello\0例字符串“hello”在內(nèi)存中例空串“”\0aa
\0例‘a(chǎn)’“a”例:charch;ch=“A”;例:charch;ch=‘A’;34例轉(zhuǎn)義字符舉例
main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}例main(){printf(“¥\b=\n”);}運(yùn)行結(jié)果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’運(yùn)行結(jié)果:屏幕顯示:=35字符變量用于存放單個(gè)字符常量,使用char來定義。字符變量在內(nèi)存中占一個(gè)字節(jié)例2.4字符變量的值。#include<stdio.h>main(){chara=0x1261,b;b=a-32;printf("%c,%c\n%d,%d\n",a,b,a,b);}沒有字符串變量,用字符數(shù)組存放字符型變量charc1='x',c2='y',c3;charoptr;字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。程序運(yùn)行的結(jié)果為:a,A97,65當(dāng)整型變量按字符變量處理時(shí),只有低八位參與處理。362.62.72.82.92.10算術(shù)運(yùn)算符與算術(shù)表達(dá)式賦值運(yùn)算符與賦值表達(dá)式逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式位運(yùn)算符數(shù)據(jù)類型轉(zhuǎn)換與計(jì)算類型長度運(yùn)算符本章主要內(nèi)容37學(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é)果的類型2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式38基本算術(shù)運(yùn)算符基本算術(shù)運(yùn)算符:+
-*/%說明:雙目運(yùn)算符兩邊的運(yùn)算對(duì)象的類型不一致,使運(yùn)算符兩邊的類型達(dá)到一致后,再進(jìn)行運(yùn)算。除運(yùn)算的結(jié)果與運(yùn)算對(duì)象的數(shù)據(jù)類型有關(guān),兩整數(shù)相除,結(jié)果為整數(shù)%要求兩側(cè)均為整型數(shù)據(jù)C語言中,所有實(shí)型數(shù)的運(yùn)算均以雙精度方式進(jìn)行。若是單精度,則在尾數(shù)部分補(bǔ)0,使之轉(zhuǎn)化為雙精度數(shù)。正負(fù)號(hào)運(yùn)算符為+(正號(hào))和?(負(fù)號(hào))。它們?yōu)閱文窟\(yùn)算符,必須出現(xiàn)在運(yùn)算對(duì)象的左邊,運(yùn)算對(duì)象可以是整型,也可以是實(shí)型例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()運(yùn)算結(jié)果是兩數(shù)相除后所得的余數(shù),結(jié)果的符號(hào)與編譯系統(tǒng)有關(guān)。在TurboC和VC中,所得結(jié)果的符號(hào)與被除數(shù)相同。39算術(shù)表達(dá)式及算術(shù)運(yùn)算符的優(yōu)先級(jí)和結(jié)合性算術(shù)表達(dá)式:用算術(shù)運(yùn)算符將運(yùn)算對(duì)象連接起來的表達(dá)式稱為算術(shù)表達(dá)式。算術(shù)表達(dá)式運(yùn)算規(guī)則和要求:可使用多層圓括號(hào),但左右括號(hào)必須配對(duì),運(yùn)算時(shí)從內(nèi)層圓括號(hào)開始,由內(nèi)向外依次計(jì)算表達(dá)式的值。按運(yùn)算符的優(yōu)先級(jí)別由高到低進(jìn)行,若表達(dá)式中運(yùn)算符的級(jí)別相同,則按運(yùn)算符的結(jié)合方向進(jìn)行。算術(shù)運(yùn)算符的結(jié)合性兩個(gè)優(yōu)先級(jí)相同的運(yùn)算符,則按結(jié)合方向順序處理。自左至右(稱為左結(jié)合性)和自右至左(稱為右結(jié)合性)同級(jí)單目算術(shù)運(yùn)算符的結(jié)合性是自右向左,同級(jí)雙目算術(shù)運(yùn)算符的結(jié)合性是自左向右。40基本算術(shù)運(yùn)算符對(duì)象數(shù)優(yōu)先級(jí)名稱運(yùn)算符運(yùn)算規(guī)則運(yùn)算對(duì)象結(jié)合性單目1正+取原值整型或?qū)嵭妥杂蚁蜃筘?fù)-取負(fù)值雙目2乘*乘法整型或?qū)嵭妥宰笙蛴页?除法模%整除取余整型3加+加法整型或?qū)嵭蜏p-減法41算術(shù)運(yùn)算符的優(yōu)先級(jí)當(dāng)表達(dá)式中出現(xiàn)多個(gè)運(yùn)算符時(shí),就會(huì)碰到哪個(gè)先算,哪個(gè)后算的問題,這個(gè)問題稱為運(yùn)算符的優(yōu)先級(jí)若一個(gè)運(yùn)算對(duì)象兩側(cè)有不同的運(yùn)算符,應(yīng)先執(zhí)行“優(yōu)先級(jí)別”高的運(yùn)算,例如先乘除后加減。42自增、自減運(yùn)算符++--作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)例2.5自增、自減運(yùn)算符的使用。#include<stdio.h>main(){inti=5,x;x=i++; printf("i=%d,x=%d\n",i,x); printf("%d\t",++i);printf("%d\t",--i); printf("%d\t",i--); printf("%d\t",-i++);printf("%d\n",-i--);}程序運(yùn)行結(jié)果如下:i=6,x=5766-5-6使用自增、自減運(yùn)算符時(shí)應(yīng)注意:運(yùn)算對(duì)象不能是常量和表達(dá)式當(dāng)出現(xiàn)難以區(qū)分的若干個(gè)+或-組成運(yùn)算符串時(shí),自左向右取盡可能多的符號(hào)組成運(yùn)算符。不要在一個(gè)表達(dá)式中對(duì)同一個(gè)變量進(jìn)行多次諸如i++或++i等運(yùn)算例如寫成:i++*++i+i?*?i如i+++j應(yīng)理解為(i++)+j,而不是i+(++j)。432.62.72.82.92.10算術(shù)運(yùn)算符與算術(shù)表達(dá)式賦值運(yùn)算符與賦值表達(dá)式逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式位運(yùn)算符數(shù)據(jù)類型轉(zhuǎn)換與計(jì)算類型長度運(yùn)算符本章主要內(nèi)容44簡單賦值運(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;2.7賦值運(yùn)算符和賦值表達(dá)式45說明:結(jié)合方向:自右向左優(yōu)先級(jí):只高于逗號(hào)運(yùn)算符,比任何其他運(yùn)算符的優(yōu)先級(jí)都低左側(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=246說明:結(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)))472.62.72.82.92.10算術(shù)運(yùn)算符與算術(shù)表達(dá)式賦值運(yùn)算符與賦值表達(dá)式逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式位運(yùn)算符數(shù)據(jù)類型轉(zhuǎn)換與計(jì)算類型長度運(yùn)算符本章主要內(nèi)容48形式:表達(dá)式1,表達(dá)式2,……表達(dá)式n結(jié)合性:從左向右優(yōu)先級(jí):在所有運(yùn)算符中是最低的逗號(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,32.8逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式例2.6逗號(hào)運(yùn)算符。#include<stdio.h>main(){intx,a;x=(a=3,6*3);printf("a=%d,x=%d\n",a,x);x=a=3,6*a;printf("a=%d,x=%d\n",a,x);}程序運(yùn)行的結(jié)果應(yīng)為:a=3,x=18a=3,x=3492.62.72.82.92.10算術(shù)運(yùn)算符與算術(shù)表達(dá)式賦值運(yùn)算符與賦值表達(dá)式逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式位運(yùn)算符數(shù)據(jù)類型轉(zhuǎn)換與計(jì)算類型長度運(yùn)算符本章主要內(nèi)容50位運(yùn)算符種類:~
<<>>&^|位運(yùn)算:對(duì)運(yùn)算對(duì)象按二進(jìn)制位進(jìn)行操作。位運(yùn)算對(duì)象:只能是整型或字符型數(shù)據(jù),不能是其他類型的數(shù)據(jù),其運(yùn)算結(jié)果仍是整型或字符型數(shù)據(jù)~:運(yùn)算對(duì)象在運(yùn)算符的右邊功能:對(duì)運(yùn)算對(duì)象的各二進(jìn)位按位求反,即使每一位上的0變1;變1為0。例~9:運(yùn)算結(jié)果為-109的二進(jìn)制表示:0000000000001001
按位求反后為:1111111111110110即:-10<<:左移例如:a<<4功能:把a(bǔ)的各二進(jìn)位向左移動(dòng)4位若a=00010011(十進(jìn)制19),左移4位后為00110000(十進(jìn)制48),其中左端移出的0001四位丟棄,低位補(bǔ)0000。>>:右移例如:a>>2功能:把a(bǔ)的各二進(jìn)位向右移動(dòng)2位若a=0000000000001111(十進(jìn)制15),右移2位后為0000000000000011(十進(jìn)制3)。
“&”:按位與例如:9&(-5)0000000000001001(9的二進(jìn)制補(bǔ)碼)&1111111111111011(-5的二進(jìn)制補(bǔ)碼)=0000000000001001(9的二進(jìn)制補(bǔ)碼)可見9&(-5)=9。
“^”:按位異或例如:9^(5)00001001(9的二進(jìn)制補(bǔ)碼)^00000101(5的二進(jìn)制補(bǔ)碼)=00001100(十進(jìn)制為12)
“|”:按位或例如:9|(5)00001001(9的二進(jìn)制補(bǔ)碼)|00000101(5的二進(jìn)制補(bǔ)碼)=00001101(十進(jìn)制為13)2.9位運(yùn)算符和表達(dá)式51C運(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)算符:([])其它:(()-)運(yùn)算符和表達(dá)式小結(jié)522.62.72.82.92.10算術(shù)運(yùn)算符與算術(shù)表達(dá)式賦值運(yùn)算符與賦值表達(dá)式逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式位運(yùn)算符數(shù)據(jù)類型轉(zhuǎn)換與計(jì)算類型長度運(yùn)算符本章主要內(nèi)容53自動(dòng)類型轉(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)換成同一類型2.10不同類型數(shù)據(jù)間的轉(zhuǎn)換54doublefloatlongunsignedintchar,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;2.10不同類型數(shù)據(jù)間的轉(zhuǎn)換55在賦值轉(zhuǎn)換時(shí),與算術(shù)轉(zhuǎn)換類似,低級(jí)別數(shù)據(jù)類型向高級(jí)別類型的轉(zhuǎn)換一般不會(huì)出現(xiàn)問題,如float型向double型、整型向浮點(diǎn)型轉(zhuǎn)換。但有些情況的賦值轉(zhuǎn)換可能會(huì)出現(xiàn)問題。(1)將長整型數(shù)據(jù)賦給短整型或字符型變量時(shí),高位字節(jié)的數(shù)據(jù)將丟失。例2.7賦值轉(zhuǎn)換時(shí)高位字節(jié)的丟失。#include<stdio.h>main(){shorta=289;charc;longb=98304;c=a;/*截取a的低8位賦給c*/a=b;/*截取b的低16位賦給a*/printf("a=%d\tc=%d\n",a,c);}運(yùn)行結(jié)果如下:a=-32768c=3356(2)將有符號(hào)整型數(shù)據(jù)賦給無符號(hào)整型變量時(shí),把內(nèi)存中存儲(chǔ)的二進(jìn)制數(shù)字原樣復(fù)制,所以負(fù)數(shù)將轉(zhuǎn)換為正數(shù)。例如:unsignedshorta;a=?1printf(“%u”,a);注意左邊變量的數(shù)值范圍a的值為65535。(3)將無符號(hào)整型數(shù)據(jù)賦給有符號(hào)整型變量時(shí),復(fù)制機(jī)制同上。這時(shí)若符號(hào)位為1,將按負(fù)數(shù)處理。(4)將浮點(diǎn)型數(shù)據(jù)賦給整型變量時(shí),舍棄浮點(diǎn)數(shù)的小數(shù)部分。例如:inti;i=3.567printf(“%d”,i);i的值為3(5)將doub
溫馨提示
- 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年度離婚協(xié)議書及房產(chǎn)分割細(xì)則4篇
- 全新2025年度教育信息化建設(shè)合同
- 2025版信托投資公司外匯資產(chǎn)托管服務(wù)合同3篇
- 二零二五年度中美教育機(jī)構(gòu)合作項(xiàng)目風(fēng)險(xiǎn)評(píng)估與管理合同3篇
- 二零二五版美縫施工與環(huán)保驗(yàn)收合同4篇
- 水庫工程質(zhì)量檢測與監(jiān)控2025年度承包合同2篇
- 2025新生入學(xué)法律協(xié)議書(教育保障與未來規(guī)劃)3篇
- 二零二五年度定制門窗品牌代理銷售合同規(guī)范4篇
- 2025版農(nóng)田挖掘機(jī)操作工勞動(dòng)合同模板6篇
- 個(gè)人出租車承包合同(2024版)
- 2024年高純氮化鋁粉體項(xiàng)目可行性分析報(bào)告
- 安檢人員培訓(xùn)
- 危險(xiǎn)性較大分部分項(xiàng)工程及施工現(xiàn)場易發(fā)生重大事故的部位、環(huán)節(jié)的預(yù)防監(jiān)控措施
- 《榜樣9》觀后感心得體會(huì)四
- 2023事業(yè)單位筆試《公共基礎(chǔ)知識(shí)》備考題庫(含答案)
- 化學(xué)-廣東省廣州市2024-2025學(xué)年高一上學(xué)期期末檢測卷(一)試題和答案
- 2025四川中煙招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- EHS工程師招聘筆試題與參考答案(某大型央企)2024年
- 營銷策劃 -麗亭酒店品牌年度傳播規(guī)劃方案
- 2025年中國蛋糕行業(yè)市場規(guī)模及發(fā)展前景研究報(bào)告(智研咨詢發(fā)布)
- 護(hù)理組長年底述職報(bào)告
評(píng)論
0/150
提交評(píng)論