版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)類型與運(yùn)算規(guī)則第1頁,共83頁,2023年,2月20日,星期六本章內(nèi)容數(shù)據(jù)與數(shù)據(jù)類型C語言的基本數(shù)據(jù)類型及其表示算術(shù)運(yùn)算與賦值運(yùn)算其他運(yùn)算混合運(yùn)算及數(shù)據(jù)類型轉(zhuǎn)換應(yīng)用示例第2頁,共83頁,2023年,2月20日,星期六3.1數(shù)據(jù)與數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型。
數(shù)據(jù)類型構(gòu)造類型指針類型空類型(無值類型)void枚舉類型enum數(shù)組類型結(jié)構(gòu)類型struct聯(lián)合類型union基本類型整型int字符型char實(shí)型(浮點(diǎn)型)單精度型
float雙精度型
double第3頁,共83頁,2023年,2月20日,星期六
3.2C語言的基本數(shù)據(jù)類型及其表示常量:在程序運(yùn)行過程中,其值不能被改變的量稱為常量變量:在程序運(yùn)行過程中,其值能夠被改變的量稱為變量一、常量與變量第4頁,共83頁,2023年,2月20日,星期六常量分類:直接常量、符號(hào)常量。整型100,125,-100,0實(shí)型3.14,0.125,-3.789字符型‘a(chǎn)‘,‘b‘,‘2‘字符串“a“,“ab“,“
1232“1)直接常量
數(shù)值常量、字符常量、字符串常量第5頁,共83頁,2023年,2月20日,星期六2)符號(hào)常量用標(biāo)識(shí)符代表常量。定義格式:#define
標(biāo)識(shí)符常量值一般用大寫字母是宏定義預(yù)處理命令,不是C語句目的:增加程序的可維護(hù)性。第6頁,共83頁,2023年,2月20日,星期六例:符號(hào)常量的使用
#definePRICE30
#include<stdio.h>
voidmain()
{
intnum,total;
num=10;
total=num*PRICE;
printf(″total=%d\n″,total);
}說明:程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進(jìn)行運(yùn)算說明:用一個(gè)標(biāo)識(shí)符代表一個(gè)常量的,稱為符號(hào)常量,即以標(biāo)識(shí)符形式出現(xiàn)的常量。符號(hào)常量的值在其作用域(在本例中為主函數(shù))內(nèi)不能改變,也不能再被賦值。說明:如再用賦值語句給PRICE賦值是錯(cuò)誤的。PRICE=40;/*錯(cuò)誤,不能給符號(hào)常量賦值。*/運(yùn)行結(jié)果:
total=300第7頁,共83頁,2023年,2月20日,星期六2.變量變量值:變量代表內(nèi)存中具有特定屬性的一個(gè)存儲(chǔ)單元,它用來存放數(shù)據(jù),該數(shù)據(jù)就是變量的值,在程序運(yùn)行期間,這些值是可以改變的。變量名:實(shí)際上是對(duì)應(yīng)地址單元的符號(hào)化表示。在對(duì)程序編譯連接時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對(duì)應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)。第8頁,共83頁,2023年,2月20日,星期六變量命名的規(guī)定:
C語言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。第9頁,共83頁,2023年,2月20日,星期六注意:編譯系統(tǒng)將大寫字母和小寫字母認(rèn)為是兩個(gè)不同的字符。建議變量名的長度最好不要超過8個(gè)字符。在選擇變量名和其它標(biāo)識(shí)符時(shí),應(yīng)注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標(biāo)識(shí)符。要求對(duì)所有用到的變量作強(qiáng)制定義,也就是“先定義,后使用”。第10頁,共83頁,2023年,2月20日,星期六變量定義后必須賦初值才能使用,即進(jìn)行變量初始化。變量的初始化數(shù)據(jù)類型說明符變量名1=常量或表達(dá)式[,變量名2=常量或表達(dá)式,…];或變量名=常量或表達(dá)式;
初始化變量的簡(jiǎn)單格式變量的定義類型關(guān)鍵字變量名1[,變量名2,…];第11頁,共83頁,2023年,2月20日,星期六實(shí)例:
floatf1,f2,f3;f1=2.46f; charc=‘a(chǎn)’; longlength,sum,width=23; length=120;第12頁,共83頁,2023年,2月20日,星期六
二、整型數(shù)據(jù)及其表示1.整型常量的表示方法
整型常量即整常數(shù)。在C語言中,整常數(shù)可用以下三種形式表示:(1)十進(jìn)制整數(shù)。如:123,-456,4。(2)八進(jìn)制整數(shù)。以0頭的數(shù)是八進(jìn)制數(shù)。如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)83;-011表示八進(jìn)制數(shù)-11,即十進(jìn)制數(shù)-9。第13頁,共83頁,2023年,2月20日,星期六(3)十六進(jìn)制整數(shù)。以0x開頭的數(shù)是16進(jìn)制數(shù)。如:0x123,代表16進(jìn)制數(shù)123,等于十進(jìn)制數(shù)291。-0x12等于十進(jìn)制數(shù)-18。
2.整型變量
1)整型數(shù)據(jù)在內(nèi)存中的存放形式
數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的。
如:inti;/*定義為整型變量*/i=10;/*給i賦以整數(shù)10*/
第14頁,共83頁,2023年,2月20日,星期六注意:十進(jìn)制數(shù)10的二進(jìn)制形式為1010,TurboC2.0中為一個(gè)整型變量在內(nèi)存中分配2個(gè)字節(jié)的存儲(chǔ)單元(不同的編譯系統(tǒng)為整型數(shù)據(jù)分配的字節(jié)數(shù)是不相同的,VC++6.0則分配4個(gè)字節(jié))。數(shù)值是以補(bǔ)碼(complement)表示的。
第15頁,共83頁,2023年,2月20日,星期六2)整型變量的分類:共六種有符號(hào)基本整型有符號(hào)短整型有符號(hào)長整型無符號(hào)基本整型無符號(hào)短整型無符號(hào)長整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)
注意:括號(hào)表示其中的內(nèi)容是可選的.第16頁,共83頁,2023年,2月20日,星期六整數(shù)類型的有關(guān)數(shù)據(jù):類型類型說明符長度數(shù)的范圍基本型
int2字節(jié)-32768~32767短整型short2字節(jié)-215~215-1長整型long4字節(jié)-231~231-1
無符號(hào)整型unsigned2字節(jié)
0~65535無符號(hào)短整型unsignedshort2字節(jié)0~65535無符號(hào)長整型unsignedlong4字節(jié)0~(232-1)第17頁,共83頁,2023年,2月20日,星期六3)整型變量的定義:
C規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強(qiáng)制類型定義”。
例如:
inta,b;(指定變量a、b為整型)
unsignedshortc,d;(指定變量c、d為無符號(hào)短整型)
longe,f;(指定變量e、f為長整型)第18頁,共83頁,2023年,2月20日,星期六例:整型變量的定義與使用
#include<stdio.h>
voidmain()
{
inta,b,c,d;/*指定a、b、c、d為整型變量*/
unsignedu;/*指定u為無符號(hào)整型變量*/
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf(″a+u=%d,b+u=%d\n″,c,d);
}說明:可以看到不同種類的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算運(yùn)行結(jié)果:
a+u=22,b+u=-14
第19頁,共83頁,2023年,2月20日,星期六例:整型數(shù)據(jù)的溢出
#include<stdio.h>
voidmain()
{inta,b;
a=32767;
b=a+1;
printf(“%d,%d\n”,a,b);
}
說明:數(shù)值是以補(bǔ)碼表示的。一個(gè)整型變量只能容納-32768~32767范圍內(nèi)的數(shù),無法表示大于32767或小于-32768的數(shù)。遇此情況就發(fā)生“溢出”。運(yùn)行結(jié)果:
32767,-32768第20頁,共83頁,2023年,2月20日,星期六3.整型常量的類型
1)一個(gè)整數(shù),如果其值在-32768~+32767范圍內(nèi),認(rèn)為它是int型,它可以賦值給int型和longint型變量。
2)一個(gè)整數(shù),如果其值超過了上述范圍,而在-2147483637~+2147483647范圍內(nèi),則認(rèn)為它是為長整型??梢詫⑺x值給一個(gè)longint型變量。第21頁,共83頁,2023年,2月20日,星期六3)如果所用的C版本(如TurboC)分配給shortint與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長度相同,則它的表數(shù)范圍與int型相同。因此一個(gè)int型的常量同時(shí)也是一個(gè)shortint型常量,可以賦給int型或shortint型變量。
第22頁,共83頁,2023年,2月20日,星期六4)一個(gè)整常量后面加一個(gè)字母u或U,認(rèn)為是unsignedint型,如12345u,在內(nèi)存中按unsignedint規(guī)定的方式存放(存儲(chǔ)單元中最高位不作為符號(hào)位,而用來存儲(chǔ)數(shù)據(jù))。如果寫成-12345u,則先將-12345轉(zhuǎn)換成其補(bǔ)碼53191,然后按無符號(hào)數(shù)存儲(chǔ)。第23頁,共83頁,2023年,2月20日,星期六5)在一個(gè)整常量后面加一個(gè)字母l或L,則認(rèn)為是longint型常量。例如123l.432L,0L等。這往往用于函數(shù)調(diào)用中。如果函數(shù)的形參為longint型,則要求實(shí)參也為longint型。第24頁,共83頁,2023年,2月20日,星期六
三、實(shí)型數(shù)據(jù)及其表示1.浮點(diǎn)型常量的表示方法兩種表示形式小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e
第25頁,共83頁,2023年,2月20日,星期六規(guī)范化的指數(shù)形式:
在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位(且只能有一位)非零的數(shù)字.
例如:123.456可以表示為:
123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e
其中的1.23456e2稱為“規(guī)范化的指數(shù)形式”。第26頁,共83頁,2023年,2月20日,星期六2.浮點(diǎn)型變量1)浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式
一個(gè)浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(32位)。與整型數(shù)據(jù)的存儲(chǔ)方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的。系統(tǒng)把一個(gè)浮點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。尾數(shù)指數(shù)3個(gè)字節(jié)1個(gè)字節(jié)第27頁,共83頁,2023年,2月20日,星期六類型
字節(jié)數(shù)
數(shù)的范圍
有效數(shù)字float 4 10-37~1038 6~7位double型 810-307~1030815~16位longdouble 1610-4931~10493218~19位2)浮點(diǎn)型變量的分類浮點(diǎn)型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。第28頁,共83頁,2023年,2月20日,星期六例:浮點(diǎn)型數(shù)據(jù)的舍入誤差
#include<stdio.h>
voidmain()
{floata,b;
a=123456.789e5;
b=a+20;
printf(“%f\n”,b);
}
說明:一個(gè)單精度浮點(diǎn)型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減,否則就會(huì)“丟失”小的數(shù)運(yùn)行結(jié)果:
12345678848.000000
第29頁,共83頁,2023年,2月20日,星期六3.浮點(diǎn)型常量的類型
C編譯系統(tǒng)將浮點(diǎn)型常量作為雙精度來處理。
例如:f=2.45678*4523.65
系統(tǒng)先把2.45678和4523.65作為雙精度數(shù),然后進(jìn)行相乘的運(yùn)算,得到的乘也是一個(gè)雙精度數(shù)。最后取其前7位賦給浮點(diǎn)型變量f。如是在數(shù)的后面加字母f或F(如1.65f,654.87F),這樣編譯系統(tǒng)就會(huì)把它們按單精度(32位)處理。第30頁,共83頁,2023年,2月20日,星期六四、字符型數(shù)據(jù)
1.字符常量(1)用單引號(hào)包含的一個(gè)字符是字符型常量(2)只能包含一個(gè)字符例‘a(chǎn)’,‘A’,‘1’‘a(chǎn)bc’、“a”第31頁,共83頁,2023年,2月20日,星期六
有些以“\“開頭的特殊字符稱為轉(zhuǎn)義字符\n換行\(zhòng)t橫向跳格\b退格\r回車\\反斜線\’單引號(hào)字符\”雙引號(hào)字符\dddddd表示1到3位八進(jìn)制數(shù)字\xhhhh表示1到2位十六進(jìn)制數(shù)字第32頁,共83頁,2023年,2月20日,星期六
‘\101’-----------‘A’‘\012’-----------’\n’‘\141’-----------’a’‘\x61’-----------’a’‘\060’-----------’0’‘\483’----------()例轉(zhuǎn)義字符舉例#include<stdio.h>voidmain(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}運(yùn)行結(jié)果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’例voidmain(){printf(“Y\b=\n”);}運(yùn)行結(jié)果:屏幕顯示:=例如:第33頁,共83頁,2023年,2月20日,星期六2.字符變量字符型變量用來存放字符,注意只能放一個(gè)字符。字符變量的定義形式如下:charc1,c2;可以用下面語句對(duì)c1,c2賦值:
c1=‘a(chǎn)‘;c2=‘b‘
;一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。
第34頁,共83頁,2023年,2月20日,星期六3.字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法將一個(gè)字符存放到一個(gè)字符變量中,實(shí)際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲(chǔ)單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。第35頁,共83頁,2023年,2月20日,星期六例:向字符變量賦以整數(shù)。
#include<stdio.h>
voidmain()
{
charc1,c2;
c1=97;
c2=98;
printf("%c%c\n",c1,c2);
printf("%d%d\n",c1,c2);
}說明:在第3和第4行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當(dāng)于以下兩個(gè)賦值語句:
c1=′a′;c2=′b′;因?yàn)椤痑’和’b’的ASCII碼為97和98運(yùn)行結(jié)果:ab
9798第36頁,共83頁,2023年,2月20日,星期六例:大小寫字母的轉(zhuǎn)換
#include<stdio.h>
voidmain()
{
charc1,c2;
c1='a';
c2='b';
c1=c1-32;
c2=c2-32;
printf("%c%c",c1,c2);
}說明:程序的作用是將兩個(gè)小寫字母a和b轉(zhuǎn)換成大寫字母A和B。從ASCII代碼表中可以看到每一個(gè)小寫字母比它相應(yīng)的大寫字母的ASCII碼大32。C語言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。運(yùn)行結(jié)果:AB
第37頁,共83頁,2023年,2月20日,星期六4.字符串常量字符串常量是一對(duì)雙撇號(hào)括起來的字符序列。合法的字符串常量:
"Howdoyoudo.","CHINA","a","$123.45"可以輸出一個(gè)字符串,如
printf("Howdoyoudo.");第38頁,共83頁,2023年,2月20日,星期六'a'是字符常量,"a"是字符串常量,二者不同。
如:假設(shè)C被指定為字符變量
:charcc='a'c="a";c="CHINA";
結(jié)論:
不能把一個(gè)字符串常量賦給一個(gè)字符變量。第39頁,共83頁,2023年,2月20日,星期六C規(guī)定:在每一個(gè)字符串常量的結(jié)尾加一個(gè)“字符串結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C中以字符’\0’作為字符串結(jié)束標(biāo)志。
如:如果有一個(gè)字符串常量”CHINA”,實(shí)際上在內(nèi)存中是:CHINA\0它占內(nèi)存單元不是5個(gè)字符,而是6個(gè)字符,最后一個(gè)字符為'\0'。但在輸出時(shí)不輸出'\0'。第40頁,共83頁,2023年,2月20日,星期六3.3運(yùn)算符與表達(dá)式一、運(yùn)算符簡(jiǎn)介
計(jì)算機(jī)與運(yùn)算密不可分,要運(yùn)算就必須要有運(yùn)算符和運(yùn)算量。那么,什么是運(yùn)算符?什么是運(yùn)算量呢?例:1+2運(yùn)算量運(yùn)算符第41頁,共83頁,2023年,2月20日,星期六二、運(yùn)算符的分類1)根據(jù)參加運(yùn)算的操作數(shù)的數(shù)目不同:?jiǎn)文窟\(yùn)算符雙目運(yùn)算符三目運(yùn)算符目:一個(gè)運(yùn)算符能連接的對(duì)象的個(gè)數(shù)。3.3運(yùn)算符與表達(dá)式第42頁,共83頁,2023年,2月20日,星期六2)按照完成的運(yùn)算來分(1)算術(shù)運(yùn)算符(+,-,*,/,%,++,--)(2)關(guān)系運(yùn)算符(>,<,>=,<=,==,?。剑?3)邏輯運(yùn)算符(!,&&,||)(4)位運(yùn)算符(<<,>>,~,|,∧,&)(5)賦值運(yùn)算符(=及其擴(kuò)展賦值運(yùn)算符)(6)條件運(yùn)算符(?:)(7)逗號(hào)運(yùn)算符(,)3.3運(yùn)算符與表達(dá)式第43頁,共83頁,2023年,2月20日,星期六(8)指針運(yùn)算符(*和&)(9)求字節(jié)數(shù)運(yùn)算符(
sizeof)(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符((類型關(guān)鍵字))(11)分量運(yùn)算符(.->)(12)下標(biāo)運(yùn)算符([])(13)其他(如函數(shù)調(diào)用運(yùn)算符())3.3運(yùn)算符與表達(dá)式第44頁,共83頁,2023年,2月20日,星期六三、運(yùn)算符的優(yōu)先級(jí)與結(jié)合性優(yōu)先級(jí):多個(gè)運(yùn)算符組合運(yùn)算時(shí)的先后順序。例:a-b*c結(jié)合性:操作數(shù)兩邊的運(yùn)算符優(yōu)先級(jí)相同時(shí),運(yùn)算方向是從左向右,還是從右向左。例:a-b+c3.3運(yùn)算符與表達(dá)式第45頁,共83頁,2023年,2月20日,星期六
表達(dá)式:使用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象連接起來、符合語法規(guī)則的式子。
例:a*b/c-1.5+’a’
C規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。在表達(dá)式求值時(shí),按運(yùn)算符的優(yōu)先級(jí)別高低次序執(zhí)行。3.3運(yùn)算符與表達(dá)式第46頁,共83頁,2023年,2月20日,星期六四、C運(yùn)算符的優(yōu)先級(jí)高初等運(yùn)算符()、[]、->
單目運(yùn)算符++、--、!、+、-
算術(shù)運(yùn)算符+、-、*、/、%
關(guān)系運(yùn)算符<、<=、>、>=、==、!=
邏輯運(yùn)算符&&、||
條件運(yùn)算符?:
賦值運(yùn)算符=低逗號(hào)運(yùn)算符,3.3運(yùn)算符與表達(dá)式第47頁,共83頁,2023年,2月20日,星期六五、C運(yùn)算符的結(jié)合性單目運(yùn)算符:自右向左結(jié)合
雙目運(yùn)算符:自左向右結(jié)合例:voidmain(){inta,b=3,c=5;a=b=c;printf(“%d,%d,%d\n”,a,b,c);}3.3運(yùn)算符與表達(dá)式第48頁,共83頁,2023年,2月20日,星期六一、算術(shù)運(yùn)算符和算術(shù)表達(dá)式
1.基本的算術(shù)運(yùn)算符:+(加法運(yùn)算符,或正值運(yùn)算符。如:3+5、+3)-(減法運(yùn)算符,或負(fù)值運(yùn)算符。如:5-2、-3)*(乘法運(yùn)算符。如:3*5)/(除法運(yùn)算符。如:5/3)%(模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3)。3.4算術(shù)運(yùn)算與賦值運(yùn)算第49頁,共83頁,2023年,2月20日,星期六基本算術(shù)運(yùn)算符優(yōu)先級(jí)與結(jié)合性:優(yōu)先級(jí):*/%同級(jí)(高),+-同級(jí)(低)結(jié)合性:相同優(yōu)先級(jí)運(yùn)算符進(jìn)行運(yùn)算時(shí)的次序自左向右(標(biāo)記為→)3.4算術(shù)運(yùn)算與賦值運(yùn)算第50頁,共83頁,2023年,2月20日,星期六注意事項(xiàng):
1)乘號(hào)和除號(hào)的書寫方式。
2)整數(shù)除以整數(shù)的結(jié)果是整數(shù)。
3)兩整數(shù)相除,且其中一個(gè)為負(fù),結(jié)果隨編譯系統(tǒng)的不同而不同。大多數(shù)按“向零取整”的方法處理。
4)算術(shù)表達(dá)式中經(jīng)常使用圓括號(hào)來表示運(yùn)算的次序,括號(hào)必須成對(duì)使用,括號(hào)優(yōu)先。第51頁,共83頁,2023年,2月20日,星期六算術(shù)運(yùn)算實(shí)例1)參加運(yùn)算的對(duì)象都是int型,結(jié)果截取為int型
10/3=
10.0/3=1/2=10/5*3= 11/3=11/3.=1./2=10/(5*3)=33.3333330633.6666670.50第52頁,共83頁,2023年,2月20日,星期六2)求余運(yùn)算的對(duì)象必須是整型:整數(shù)除法的余數(shù)。
9%3= 1%3=10%3= 10%-3=-10%3= -10%-3=01-111-1第53頁,共83頁,2023年,2月20日,星期六2.自增、自減運(yùn)算符
作用:使變量的值增1或減1
++自增
-- 自減
注意:
1.++和--為單目運(yùn)算,只能作用于變量;
2.只能對(duì)整型、字符型和指針變量進(jìn)行運(yùn)算。3.4算術(shù)運(yùn)算與賦值運(yùn)算第54頁,共83頁,2023年,2月20日,星期六功能:
++x<==>x=x+1--x<==>x=x-1(前綴)x++<==>x=x+1 x-- <==>x=x-1(后綴)3.4算術(shù)運(yùn)算與賦值運(yùn)算第55頁,共83頁,2023年,2月20日,星期六自增(自減)有前綴和后綴之分。
前綴形式:先自增(自減),再引用
后綴形式:先引用,再自增(自減)前綴與后綴的區(qū)別:
y=++x;<==>x=x+1;y=x;//x先加1再賦值
y=x++;<==>y=x;x=x+1;//x先賦值再加1第56頁,共83頁,2023年,2月20日,星期六實(shí)例(1)++i;i++;
因?yàn)樵诒磉_(dá)式中沒有其它運(yùn)算,結(jié)果一樣。(2)x=1;y=++x;
結(jié)果:x=2,y=2y=++x;<==>x=x+1;y=x;
在做賦值運(yùn)算之前,x先加1,然后將x賦給y。(3)x=1;y=x++;
結(jié)果:x=2,y=1y=x++;<==>y=x;x=x+1;
先將x賦值給y,然后x再加1實(shí)例第57頁,共83頁,2023年,2月20日,星期六實(shí)例已知:intx=2,y=5,z;z=++x;z=++x*++y;z=x++*++y;z=++x*y++;z=x++*y++;
x=3,z=3x=3,y=6,z=3*6=18x=3,y=6,z=2*6=12x=3,y=6,z=3*5=15x=3,y=6,z=2*5=10
第58頁,共83頁,2023年,2月20日,星期六注意,以下操作是錯(cuò)誤的:
x=++(i+j)+1;/*如果可用,那么自增之后得到的值存放在什么地方呢?*/int
d=++3;//3是常量,常量值不能改變3.4算術(shù)運(yùn)算與賦值運(yùn)算第59頁,共83頁,2023年,2月20日,星期六自增和自減運(yùn)算符使用十分靈活,但在很多情況下可能出現(xiàn)歧義,產(chǎn)生意想不到的副作用。例:
inti=3;printf(“%d,%d\n”,i,i++);
輸出結(jié)果3,3?
4,3?不要寫出別人看不懂的也不知道系統(tǒng)會(huì)怎樣執(zhí)行程序第60頁,共83頁,2023年,2月20日,星期六又如:i的初值為3,有以下表達(dá)式
(i++)+(i++)+(i++)
表達(dá)式內(nèi)的值為多少呢?編程時(shí)要遵循安全第一、易于理解的原則,可寫成:
i=3;a=i++;b=i++;c=i++;d=a+b+c;第61頁,共83頁,2023年,2月20日,星期六說明(1)自增、自減運(yùn)算,常用于循環(huán)語句中,使循環(huán)控制變量加(或減)1,以及指針變量中,使指針指向下(或上)一個(gè)地址。(2)自增、自減運(yùn)算符,不能用于常量和表達(dá)式。例如,5++、--(a+b)等都是非法的。(3)在表達(dá)式中,連續(xù)使變量進(jìn)行自增或自減運(yùn)算時(shí),很容易出錯(cuò),所以最好避免這種用法。例:不要寫成i+++j的形式,而應(yīng)寫成
(i++)+j的形式第62頁,共83頁,2023年,2月20日,星期六二、賦值運(yùn)算符(雙目)賦值符號(hào)“=”就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。如a=3;
是執(zhí)行一次賦值操作(或稱賦值運(yùn)算),把常量3賦給變量a。也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量。
如:a=3*5;
3.4算術(shù)運(yùn)算與賦值運(yùn)算第63頁,共83頁,2023年,2月20日,星期六三、賦值組合運(yùn)算符(雙目)
表示方式:e1op=e2
等價(jià)于:e1=e1op(e2)
其中,op為下列10個(gè)運(yùn)算符之一:
+–*/%<<>>|&∧e1為可以進(jìn)行賦值操作的變量;
e2為合法的表達(dá)式或常量。結(jié)合性:從右向左。第64頁,共83頁,2023年,2月20日,星期六例:x+=2; <==>x=x+2;x*=y+1; <==>x=x*(y+1);
不等價(jià)x=x*y+1; 注意:如果賦值號(hào)右側(cè)是包含若干項(xiàng)的表達(dá)式,則相當(dāng)于它有括號(hào)。3.4算術(shù)運(yùn)算與賦值運(yùn)算第65頁,共83頁,2023年,2月20日,星期六賦值運(yùn)算中,將賦值運(yùn)算符右邊的數(shù)據(jù)轉(zhuǎn)變?yōu)樽筮叺淖兞款愋?。說明:多種數(shù)據(jù)類型進(jìn)行混合運(yùn)算時(shí),將低類型的數(shù)據(jù)轉(zhuǎn)換為高類型。3.4算術(shù)運(yùn)算與賦值運(yùn)算第66頁,共83頁,2023年,2月20日,星期六四、賦值表達(dá)式由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來的式子稱為“賦值表達(dá)式”。一般形式為:
<變量><賦值運(yùn)算符><表達(dá)式>
例如:“a=5”是一個(gè)賦值表達(dá)式
3.4算術(shù)運(yùn)算與賦值運(yùn)算第67頁,共83頁,2023年,2月20日,星期六對(duì)賦值表達(dá)式求解的過程是:
①求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值;②賦給賦值運(yùn)算符左側(cè)的變量。例如:賦值表達(dá)式“a=3*5”
,執(zhí)行表達(dá)式后,變量a的值也是15。
注意:一個(gè)賦值表達(dá)式應(yīng)該有一個(gè)值
,賦值表達(dá)式的值就是被賦值的變量的值。3.4算術(shù)運(yùn)算與賦值運(yùn)算第68頁,共83頁,2023年,2月20日,星期六賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。如:a+=a-=a*a分析:此賦值表達(dá)式的求解步驟如下∶①先進(jìn)行“a-=a*a”的運(yùn)算,它相當(dāng)于a=a-a*a,a的值為12-144=-132。②再進(jìn)行“a+=-132”的運(yùn)算,相當(dāng)于a=a+(-132),a的值為-132-132=-264。3.4算術(shù)運(yùn)算與賦值運(yùn)算第69頁,共83頁,2023年,2月20日,星期六
將賦值表達(dá)式作為表達(dá)式的一種,使賦值操作不僅可以出現(xiàn)在賦值語句中,而且可以以表達(dá)式形式出現(xiàn)在其他語句(如輸出語句、循環(huán)語句等)中.
如:printf("%d",a=b);
分析:如果b的值為3,則輸出a的值(也是表達(dá)式a=b的值)為3。在一個(gè)語句中完成了賦值和輸出雙重功能。3.4算術(shù)運(yùn)算與賦值運(yùn)算第70頁,共83頁,2023年,2月20日,星期六一、逗號(hào)運(yùn)算符
逗號(hào)運(yùn)算符:將兩個(gè)表達(dá)式連接起來,又稱為“順序求值運(yùn)算符”。
如:3+5,6+83.5其他運(yùn)算
一般形式:
表達(dá)式1,表達(dá)式2求解過程:先求解表達(dá)式1,再求解表達(dá)式2。整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式2的值。
逗號(hào)表達(dá)式的值為14第71頁,共83頁,2023年,2月20日,星期六例:逗號(hào)表達(dá)式a=3*5,a*4
分析:賦值運(yùn)算符的優(yōu)先級(jí)別高于逗號(hào)運(yùn)算符,因此應(yīng)先求解a=3*5.a的值為15,然后求解a*4,得60。整個(gè)逗號(hào)表達(dá)式的值為60。
一個(gè)逗號(hào)表達(dá)式又可以與另一個(gè)表達(dá)式組成一個(gè)新的逗號(hào)表達(dá)式如:(a=3*5,a*4),a+5
先計(jì)算出a的值等于15,再進(jìn)行a*4的運(yùn)算得60(但a值未變,仍為15),再進(jìn)行a+5得20,即整個(gè)表達(dá)式的值為20。3.5其他運(yùn)算第72頁,共83頁,2023年,2月20日,星期六逗號(hào)表達(dá)式的一般形式可以擴(kuò)展為
表達(dá)式1,表達(dá)式2,表達(dá)式3,……,表達(dá)式n它的值為表達(dá)式n的值。逗號(hào)運(yùn)算符是所有運(yùn)算符中級(jí)別最低的例:
①x=(a=3,6*3)②x=a=3,6*3賦值表達(dá)式,將一個(gè)逗號(hào)表達(dá)式的值賦給x,x的值等于18逗號(hào)表達(dá)式,包括一個(gè)賦值表達(dá)式和一個(gè)算術(shù)表達(dá)式,x的值為3,整個(gè)逗號(hào)表達(dá)式的值為18。3.5其他運(yùn)算第73頁,共83頁,2023年,2月20日,星期六注意:并不是任何地方出現(xiàn)的逗號(hào)都是作為逗號(hào)運(yùn)算符。例如函數(shù)參數(shù)也是用逗號(hào)來間隔的。如:printf(“%d,%d,%d”,a,b,c);“a,b,c”并不是一個(gè)逗號(hào)表達(dá)式,它是printf函數(shù)的3個(gè)參數(shù)printf(“%d,%d,%d”,(a,b,c),b,c)
“(a,b,c)”是一個(gè)逗號(hào)表達(dá)式,它的值等于c的值。3.5其他運(yùn)算第74頁,共83頁,2023年,2月20日,星期六
在許多情況
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動(dòng)安全和環(huán)境保護(hù)
- 2025屆廣東省廣州市從化區(qū)重點(diǎn)中學(xué)中考生物押題卷含解析
- 二零二五版多功能儲(chǔ)藏室建設(shè)合作合同3篇
- 二零二五年度餐飲店食材采購與物流配送合作協(xié)議8篇
- 個(gè)人租賃合同參考模板(場(chǎng)地、2024版)6篇
- 2025年智慧交通設(shè)施場(chǎng)地開發(fā)居間代理協(xié)議4篇
- 二零二五年耳機(jī)品牌戰(zhàn)略合作采購協(xié)議2篇
- 二零二五年特色美食城整體運(yùn)營管理服務(wù)合同2篇
- 2025年品牌發(fā)展合作協(xié)議
- 露天爆破課程設(shè)計(jì)
- 《庖丁解牛》獲獎(jiǎng)?wù)n件(省級(jí)公開課一等獎(jiǎng))-完美版PPT
- 化工園區(qū)危險(xiǎn)品運(yùn)輸車輛停車場(chǎng)建設(shè)標(biāo)準(zhǔn)
- 6月大學(xué)英語四級(jí)真題(CET4)及答案解析
- 氣排球競(jìng)賽規(guī)則
- 電梯維修保養(yǎng)報(bào)價(jià)書模板
- 危險(xiǎn)化學(xué)品目錄2023
- FZ/T 81024-2022機(jī)織披風(fēng)
- GB/T 33141-2016鎂鋰合金鑄錠
- JJF 1069-2012 法定計(jì)量檢定機(jī)構(gòu)考核規(guī)范(培訓(xùn)講稿)
- 綜合管廊工程施工技術(shù)概述課件
- 公積金提取單身聲明
評(píng)論
0/150
提交評(píng)論