版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2023/2/31中國石油大學(xué)計算機科學(xué)系C語言課件23.1C語言的字符集3.2C語言的數(shù)據(jù)類型3.3常量與變量3.4變量的定義與賦值3.5符號常量3.6運算符與表達(dá)式3.7各類型數(shù)據(jù)的混合運算3.8
不同類型賦值的結(jié)果
第3章數(shù)據(jù)類型、運算符與表達(dá)式
33.1
C語言的字符集3.1.1C語言字符集:1、字母:小寫字母a~z、大寫字母A~Z。2、數(shù)字:0~9共10個。3、空白符:空格符、制表符、換行符等。4、標(biāo)點和特殊字符。5、字符常量,字符串常量和注釋中還可以使用漢字或其它可表示的圖形符號。字符是組成語言的最基本的元素。43.1.2
C語言詞匯(六類)1、標(biāo)識符:變量名、函數(shù)名、標(biāo)號等。2、關(guān)鍵字:
關(guān)鍵字是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標(biāo)識符不應(yīng)與關(guān)鍵字相同。P365
(1)類型說明符:用于定義、說明變量、函數(shù)或其它數(shù)據(jù)結(jié)構(gòu)的類型。
(2)語句定義符:用于表示一個語句的功能。
(3)預(yù)處理命令字:用于表示一個預(yù)處理命令。
標(biāo)識符:由英文字母、數(shù)字和下劃線這三種字符組成且第一個字符必須為字母或下劃線。
作用:用來給變量、函數(shù)等命名
注意:
1.區(qū)分大小寫英文字母
2.關(guān)鍵字(保留字)不能作標(biāo)識符
例:book、Book、int1、Int、printf、_a12都可作標(biāo)識符
5a、$、p#、int、x+y都不可作標(biāo)識符函數(shù)名不是保留字保留字I大寫3、運算符:運算符與變量,函數(shù)一起組成表達(dá)式,表示各種運算功能。運算符由一個或多個字符組成。4、分隔符
在C語言中采用的分隔符有逗號和空格兩種。5、常量:
在后面章節(jié)中將專門給予介紹。6、注釋符:
C語言的注釋符是以“/*”開頭并以“*/”結(jié)尾的串。在“/*”和“*/”之間的即為注釋。程序編譯時,不對注釋作任何處理。注釋可出現(xiàn)在程序中的任何位置。注釋用來向用戶提示或解釋程序的意義。7其值不可以再分解為其它類型。用來表示某個變量在內(nèi)存儲器中的地址根據(jù)已定義的一個或多個數(shù)據(jù)類型用構(gòu)造的方法來定義的。構(gòu)造類型的值可以分解成若干個“成員”或“元素”。每個“成員”都是一個基本數(shù)據(jù)類型或又是一個構(gòu)造類型。3.2
C語言的數(shù)據(jù)類型8在調(diào)用函數(shù)值時,通常返回一個函數(shù)值,這個函數(shù)值是具有一定的數(shù)據(jù)類型的,應(yīng)在函數(shù)定義及函數(shù)說明中給以說明。但是,也有一類函數(shù),調(diào)用后并不需要向調(diào)用者返回函數(shù)值,這種函數(shù)可以定義為“空類型”。其類型說明符為void。9
基本數(shù)據(jù)類型分為:
1、常量:在程序執(zhí)行過程中,其值不發(fā)生改變的量
2、變量:其值可變的量稱為變量。
在程序中,常量是可以不經(jīng)說明而直接引用的,而變量則必須先定義后使用。3.3
常量與變量10直接常量(字面常量):n
整型常量:12、0、-3;n
實型常量:4.6、-1.23;n
字符常量:‘a(chǎn)’、‘b’。n
字符串常量:“ABC”、“123”。標(biāo)識符:用來標(biāo)識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。符號常量:用標(biāo)示符代表一個常量。在C語言中,可以用一個標(biāo)識符來表示一個常量,稱之為符號常量。在使用之前必須先定義,#define
3.3.1
常量11一、整型常量:
1.十進(jìn)制整數(shù):123、-76、02.八進(jìn)制整數(shù):076、-0253076轉(zhuǎn)換成十進(jìn)制:7*8+63.十六制整數(shù):0xa、0x20、0xf40xf4轉(zhuǎn)換成十進(jìn)制:15*16+4程序執(zhí)行過程中值不發(fā)生改變的量
只有整數(shù)標(biāo)識符號
常量12整型數(shù)據(jù)在內(nèi)存中的存放形式:如果定義了一個整型變量i:
inti;i=10;十進(jìn)制數(shù)10是以二進(jìn)制形式表示的:1010,每一個整形變量在內(nèi)存中占內(nèi)2字節(jié),存放示意圖為:
事實上,數(shù)值是以補碼表示的:
n
正數(shù)的補碼和原碼相同;
n
負(fù)數(shù)的補碼:將該數(shù)的絕對值的二進(jìn)制形式按位取反再加1。00000000000010101310的原碼:取反:再加1,得-10的補碼:由此可知,左面的第一位是表示符號的。000000000000101011111111111101011111111111110110例如:求-10的補碼14二、實型常量(浮點型):也稱為實數(shù)或者浮點數(shù)。實數(shù)只采用十進(jìn)制,有二種形式:小數(shù)形式指數(shù)形式由數(shù)碼0~9和小數(shù)點組成。小數(shù)形式必須有小數(shù)點。由十進(jìn)制數(shù)、加階碼標(biāo)志“e”或“E”、階碼(只能為整數(shù),可以帶符號)組成。其一般形式為:aEn(a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù))其值為:
a*10n。
實型常數(shù)在內(nèi)存中的存放形式15實型常量實例:
小數(shù)形式:12.、–.71、–0.71、3.14
指數(shù)形式:6.945e-8
注意:指數(shù)形式(科學(xué)表示法)中,尾數(shù)和階碼都不能省略、階碼只能為整型常量、只有十進(jìn)制形式
6.945e–8尾數(shù)階碼6.945*10-8小數(shù)點不能省略
注:任一字符都可用’\ddd’或’\xhh’表示,其中ddd為該字符的ASCII碼八進(jìn)制形式、hh為該字符的ASCII碼十六進(jìn)制形式
例:’A’
、’\101’
、’\x41’均表示A
三、字符常量(一個字符)
兩種表示方式:
1.在字符前后加單撇號:’y’
、’3’
、‘$’
2.用轉(zhuǎn)義字符表示(P48表3.3):’\n’→換行’\r’→回車’\\’→\’\’’→’’\”’
表示”’\12’→換行’\15’→回車’\xa’→換行’\134’→\’\xd’→回車’\x5c’→\0-70-9a-f整型常量與轉(zhuǎn)義字符不能混淆四、字符串常量:由兩個雙撇號括起來一串字符,其中字符個數(shù)>=0個字符串常量和字符常量區(qū)別:1)字符常量由單引號括起來,字符串常量由雙引號括起來。字符常量只能是單個字符,字符串常量則可以含一個或多個字符。2)可以把一個字符常量賦予一個字符變量,不能把一個字符串常量賦予一個字符變量。3)字符常量占一個字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1。增加的一個字節(jié)中存放字符"\0"(ASCII碼為0)。這是字符串結(jié)束的標(biāo)志。18常量總結(jié)一、整型常量:二、實型常量:三、字符常量:四、字符串常量:十進(jìn)制整數(shù):10八進(jìn)制整數(shù):012十六制整數(shù):0xa小數(shù)形式:0.123456指數(shù)形式:1.23456e-1ASCII碼十進(jìn)制:’\n’
’A’ASCII碼八進(jìn)制:’\12’
’\101’ASCII碼十六制:’\xa’
’\x41’
以‘\0’結(jié)束。19字符串
“Cprogram”
在內(nèi)存中所占的字節(jié)為:字符常量‘a(chǎn)’和字符串常量“a”在內(nèi)存中的區(qū)別:‘a(chǎn)’在內(nèi)存中占一個字節(jié),可表示為:"a"在內(nèi)存中占二個字節(jié),可表示為:
Cprogram\0aa\001100001203:‘3’
:
“3”:-3:0000000000000011001100110000000000000011001100111111111111111101?\01111111111111100ASCII碼值為(51)10→(110011)2例:-3、3、‘3’、“3”在內(nèi)存中的存放形式‘3’是字符非數(shù)字1、計算字符串長度(其中字符個數(shù))時要認(rèn)真區(qū)分轉(zhuǎn)義字符與一般字符如:”\x18\18qw+\168\1676”
中字符個數(shù)為?2、字符串存儲到內(nèi)存中所占的字節(jié)數(shù)為:字符個數(shù)+1
字符串常量可用轉(zhuǎn)義字符表示
例:“ThisisaCprogram\n”
是字符串常量,它也可表示為:
”Thisisa\103\x20program\n”*若把字符串存儲到內(nèi)存中,系統(tǒng)會自動在其末尾加一個’\0’8*8+3=672*16=3210八進(jìn)制0-722例1.main(){printf(”ab\tt\tpractice\tbook\n”);}結(jié)果ab
t
practice
book
’\n’——換行、’\r’——回車、
’\t’——水平跳到下一個tab位置
’\b’——退格、’\f’——換頁8個字符91733*轉(zhuǎn)義字符的使用例子
23例.voidmain()
{printf(”pencil\b\b\bxxx\n”);}
先顯示pencil再退三格用xxx覆蓋cil先打印pencil再重復(fù)打印xxx覆蓋cil退格顯示結(jié)果:penxxx打印結(jié)果:pencilxxx24
例.voidmain(){printf(”room”);printf(”pencil\n1234567890\r0\t1”);}顯示結(jié)果:roompencil
0
10打印結(jié)果:roompencil
1234567890換行回車水平跳到下一個Tab位01先顯示123456789025用標(biāo)識符命名,習(xí)慣用小寫
1、整型變量類型:
(1)[signed]int
(2)[signed]shortint(3)[signed]longint(4)unsigned[int](5)unsignedshort[int](6)unsignedlong[int]區(qū)別:①每個變量在內(nèi)存中所占字節(jié)數(shù)②所能存放的數(shù)值范圍3.3.2變量2字節(jié)16位4字節(jié)32位P43表3.1-32768~327670~65535各類整型量所分配的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍
以13為例:int型:shortint型:longint型:unsignedint型:unsignedshortint型:unsignedlongint型:0000000000001101000000000000110100000000000011010000000000001101000000000000000000000000000011010000000000000000000000000000110127整型數(shù)據(jù)的溢出voidmain(){inta,b;a=32767;b=a+1;printf("%d,%d\n",a,b);}32767:
01111111111111111000000000000000運行結(jié)果:32767,-32768-32768:
282、字符型變量類型:
*字符型變量是用來存放單個字符常量的ASCII碼,不是字符本身。整型變量與字符型變量可混淆使用。例如:
chara,b;
(1)char
(2)unsignedchar區(qū)別:對變量值A(chǔ)SCII碼的理解
char——
一個數(shù)的補碼
unsignedchar——一個不帶正負(fù)號的整數(shù)字符變量的類型說明符
字符數(shù)據(jù)在內(nèi)存中的存儲形式及使用方法
每個字符變量分配一個字節(jié)的內(nèi)存空間,因此只能存放一個字符。字符值以ASCII碼的形式存放。如:x的十進(jìn)制ASCII碼是120y的十進(jìn)制ASCII碼是121x:y:
允許對整型變量賦以字符值,或?qū)ψ址兞抠x以整型值。允許把字符變量按整型量輸出,或把整型量按字符量輸出。
整型量為二字節(jié)量,字符量為單字節(jié)量,當(dāng)整型量按字符型量處理時,只有低八位字節(jié)參與處理。
0111100001111001120的二進(jìn)制代碼303、實型變量類型(1)float
(2)double*(3)longdouble
區(qū)別:①每個變量在內(nèi)存中所占字節(jié)數(shù)
float—4、double—8②所能存放的數(shù)值范圍
float10-38——1038double10-308——10308③有效數(shù)字位數(shù)float—7、double—1631實數(shù)3.14159在內(nèi)存中的存放形式如下:
+.3141591數(shù)符指數(shù)小數(shù)部分占的位數(shù)愈多,數(shù)的有效數(shù)字愈多,精度愈高。占的位數(shù)愈多,能表示的數(shù)值范圍愈大。32實型數(shù)據(jù)的舍入誤差。voidmain(){floata,b;a=123456.789e5;b=a+20;
printf("%f\n",a);printf("%f\n",b);}運行結(jié)果:12345678848.00000012345678848.000000注意:1.0/3*3的結(jié)果并不等于1。大數(shù)加小數(shù)有效數(shù)字7位,前7位有效12345678900voidmain(){floata;doubleb;a=33333.33333;b=33333.33333333333333;printf("%f\n%f\n",a,b);}結(jié)果:33333.33203133333.333333
a是單精度浮點型,有效位數(shù)七位。整數(shù)已占五位,故小數(shù)二位之后均為無效數(shù)字b是雙精度型,有效位為十六位。但TurboC小數(shù)后最多保留六位,其余部分四舍五入。34一、定義變量類型:
<類型名><變量表>;若變量表中含有多個變量,它們之間用逗號隔開。最后一個變量名之后必須以“;”號結(jié)尾
例:unsignedinti,j;或unsignedi,j;
3.4
變量定義與賦值一般所有變量都在聲明部分定義類型二、給變量賦值
——把“=”右側(cè)的值賦給“=”左側(cè)的變量1、賦初值:定義變量類型時給變量賦值
在相應(yīng)變量后寫=<常量>例:inta=123,b=456,sum;2、賦值表達(dá)式:<變量>=<表達(dá)式>
賦值語句:<變量>=<表達(dá)式>;例:a=123sum=a+ba=123;sum=a+b;表達(dá)式末尾加“;”后即變成語句等價于inta,b,sum;a=123;b=456;①表達(dá)式本身有值的概念,其值同“=”左邊變量相同;而語句本身無值的概念;②表達(dá)式是用來構(gòu)成語句的。注:表達(dá)式中變量可用給該變量賦值的賦值表達(dá)式代替(應(yīng)加圓括號)例:a=123;b=456;sum=a+b;可改為:sum=(a=123)+(b=456);注意:在定義中不允許連續(xù)賦值,如:
inta=b=c=5是不合法的而inta,b,c;
a=b=c=5則是合法的×√37
voidmain(){chara,b;a=120;b=121;printf("%c,%c\n",a,b);printf("%d,%d\n",a,b);}運行結(jié)果:x,y120,121向字符變量賦以整數(shù)定義a,b為字符型賦值語句中賦以整型值格式符"c",輸出字符格式符為"d",輸出整數(shù)voidmain(){chara,b;a='a';b='b';a=a-32;b=b-32;printf("%c,%c\n%d,%d\n",a,b,a,b);}運行結(jié)果:A,B65,66
a,b被定義為字符變量并賦予字符值用字符的ASCII碼參與運算大小寫字母的ASCII碼相差32,因此運算后把小寫字母換成大寫字母。然后分別以整型和字符型輸出3、變量、變量名、變量類型、變量值、給變量賦值之間的關(guān)系變量——杯變量名——杯子的號碼變量類型——所裝的材料名稱變量值——所裝的東西多少給變量賦值——把某材料倒進(jìn)杯子水1號杯水2號杯油3號杯若類型不一致、以變量為準(zhǔn)inta;a=123.5;則a為12340*變量的特性:①一個變量只有一個值②新的不來、舊的不去,新的一來、舊的立即丟失③取之不盡例:inta;
……a=3;
……a=7.8;
……這段時間a值為3這段時間a值為7414、兩類常用賦值表達(dá)式的特別表示(1)自增、自減運算符①<變量>=<變量>+1
可用++<變量>
代替例:i=i+1、count=count+1<變量>=<變量>–1
可用–
–<變量>
代替例k=k–1、num=num–1②<變量>++與
++<變量>的區(qū)別
<變量>++
的值為變量增一前的值
++<變量>的值為變量增一的值同樣,<變量>–
–
的值為變量減一前的值
–
–<變量>的值為變量減一的值提高可執(zhí)行程序的質(zhì)量++i++count–
–k–
–num例:
voidmain(){inti,j,k;i=3;j=++i;i=3;k=i++;printf(”%d,%d\n”,j,k);i=3;j=–
–i;i=3;k=i–
–;printf(”%d,%d\n”,j,k);}
j為4i為4i為3重新賦值k為i增1前的值i為3重新賦值結(jié)果:
4,32,343例:voidmain(){inti,j,k;i=3;j=++i;k=i++;printf(”%d,%d\n”,j,k);i=3;j=i–
–;k=–
–i;printf(”%d,%d\n”,j,k);}
j為4i為4k為4,運行之后i為5j為3,運行之后i為2結(jié)果:4,43,144(2)復(fù)合的賦值運算符①<變量>=<變量>+表達(dá)式
<變量>=<變量>–表達(dá)式
<變量>=<變量>*表達(dá)式
分別可用<變量>+=表達(dá)式
<變量>–=表達(dá)式
<變量>*=表達(dá)式
代替
…i=i+3sum=sum+y+8n=n–2sum=sum–3*wn=n*2sum=sum*(3+w)i+=3sum+=y+8n–=2sum–=3*wn*=2sum*=3+w45+=、–=、*=、/=%=求余<<=左移>>=右移
&=按位與
^=按位異或
|=按位或10種復(fù)合的賦值運算符:3.5
符號常量
用#define命令宏定義一個符號常量(用標(biāo)識符命名)代表某一常量作用:減少程序中重復(fù)書寫某些常量的工作量例#definePI3.141592#include<math.h>voidmain()
{printf(”%f,%f\n”,sin(35*PI/180),cos(35*PI/180));}注意:1.符號常量名中的英文字母習(xí)慣用大寫
2.不能象給變量賦值那樣給符號常量賦值
3.符號常量即以后要講的宏名的用途。調(diào)用函數(shù)庫中的函數(shù)a=3.14159合法3.14159=a非法47例:#defineS“ThisisaCProgram.”voidmain(){printf(S);}雙引號483.6運算符與表達(dá)式
由P365附錄III中的運算符把常量、符號常量、變量、函數(shù)等連接起來的有意義的式子:如:a+=a*=(b=2)/(float)(int)(a=4.5)…..
49(1)算術(shù)運算符:用于各類數(shù)值運算:加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)共七種。(2)關(guān)系運算符:用于比較運算:大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種。(3)邏輯運算符:用于邏輯運算:與(&&)、或(||)、非(!)三種。3.6.1C語言的運算符:P365(4)位操作運算符:參與運算的量,按二進(jìn)制位進(jìn)行運算:位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。(5)賦值運算符:用于賦值運算,分為簡單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。(6)條件運算符:這是一個三目運算符,用于條件求值(?:)。(7)逗號運算符:用于把若干表達(dá)式組合成一個表達(dá)式(,)。(8)指針運算符:用于取內(nèi)容(*)和取地址(&)二種運算。(9)求字節(jié)數(shù)運算符:用于計算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)。(10)特殊運算符:有括號(),下標(biāo)[],成員(→,.)等幾種。523.6.2表達(dá)式
一、賦值表達(dá)式:
1.三種形式的賦值表達(dá)式一般賦值表達(dá)式:
自增自減表達(dá)式:復(fù)合賦值表達(dá)式:
t*=j/(2*j+1)k++s=6*a+12、賦值表達(dá)式舉例:a=b=c=5a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)表達(dá)式的值為5,a,b,c的值均為5表達(dá)式的值為11,a值為11,c的值為6表達(dá)式的值為10,a為10,b為4,c為6表達(dá)式的值為5,a為5,b為10,c為254二.算術(shù)表達(dá)式:類似數(shù)學(xué)中的代數(shù)式pow(a,2)*b/c+1.5*fabs(sin(x*3.14159/180))/’a’P371函數(shù)a2b/c+1.5|sin(3.14159x)/180|/97
abs(整型)fabc(實型/整型)551、算術(shù)運算符的有關(guān)說明:兩個整數(shù)相除,如果有小數(shù)部分:1、結(jié)果為整數(shù):舍去小數(shù)部分,取整;2、結(jié)果為負(fù)數(shù):舍入方向不固定,采取“向零取整”的方法,即取整后向“0”靠攏。如:-5/3=-1l運算符的優(yōu)先級:P365,優(yōu)先級較高的先于優(yōu)先級較低的。一個運算量兩側(cè)的運算符優(yōu)先級相同時,則按運算符的結(jié)合性所規(guī)定的結(jié)合方向處理。l運算符的結(jié)合性:分為左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。
x-y+z(左結(jié)合性):
x=y=z(右結(jié)合性):x與“-”號結(jié)合執(zhí)行x-y執(zhí)行+z執(zhí)行y=z執(zhí)行x=(y=z)572、算術(shù)表達(dá)式的有關(guān)說明:1、對表達(dá)式:(++i)+(++i)+(++i)TurboC將3作為表達(dá)式中所有i的值,因此3個i相加,得表達(dá)式的值為9。編程時應(yīng)避免這種歧義性,應(yīng)寫成:
i=3;a=i++;b=i++;c=i++;d=a+b+c;2、設(shè)i的初值為3,語句printf(“%d,%d”,i,i++);有的系統(tǒng)具有左結(jié)合性,而另一些系統(tǒng)具有有結(jié)合性,結(jié)果分別為:3,3和4,3。編程時應(yīng)避免這種歧義性,應(yīng)寫成:
j=i++;printf(“%d,%d”,j,i);583.含有強制類型轉(zhuǎn)換運算符的表達(dá)式:即表達(dá)式中含(類型名)(表達(dá)式)例.(int)a例.w+(float)(j%k)/5
整體的值為int類型,a及a的值為原類型值為float類型,j、k及它們的值仍為原來的類型59例:voidmain(){floatx=3.6;intk;k=(int)x/5;printf(”x=%f,k=%d\n”,x,k);}
結(jié)果x=3.600000,k=0360強制轉(zhuǎn)換運算符的意義例如:1/2*sqrt(x+y)結(jié)果為0intfloatintfloat(float)1/2*sqrt(x+y)0.5取整一般寫為1.0/261例如:floatk=3必須寫成abs((int)k)因為abs函數(shù)中的參數(shù)必須是整型的見P371求整數(shù)的絕對值函數(shù)62三、逗號表達(dá)式:
格式:表達(dá)式1,表達(dá)式2,······表達(dá)式n
功能:從左至右順序計算各表達(dá)式的值,以表達(dá)式
n的值作為逗號表達(dá)式
的值(整體)
例1.
定義:ints,p;
則執(zhí)行s=5;p=s++,++p,p+2,p++;
優(yōu)先級最低p為5,先將5賦給p后,s的值再加1p為6p的值是7,是整個逗號表達(dá)式最終的值未賦值63
例:若有定義:inta,b;則表達(dá)式:
a=4,b=3,a+b+2,a++,a+b+2
值是10,是整個逗號表達(dá)式最終的值a為4b為3a為5最終b值為3優(yōu)先級高a、b未賦值64例:voidmain(){inta=2,b=4,c=6,x,y;y=(x=a+b),(b+c);printf("y=%d,x=%d",y,x);}運行結(jié)果:y=6,x=6
x為6賦值優(yōu)先,y為6逗號表達(dá)式的值為10對于逗號表達(dá)式還要說明兩點:1)逗號表達(dá)式一般形式中的表達(dá)式1和表達(dá)式2也可以又是逗號表達(dá)式(嵌套)。例如:
表達(dá)式1,(表達(dá)式2,表達(dá)式3)因此可以把逗號表達(dá)式擴(kuò)展為以下形式:
表達(dá)式1,表達(dá)式2,…表達(dá)式n整個逗號表達(dá)式的值等于表達(dá)式n的值。2)程序中使用逗號表達(dá)式,通常是要分別求逗號表達(dá)式內(nèi)各表達(dá)式的值,并不一定要求整個逗號表達(dá)式的值。并不是在所有出現(xiàn)逗號的地方都組成逗號表達(dá)式,如在變量說明中,函數(shù)參數(shù)表中逗號只是用作各變量之間的間隔符。66四、組合運算符例:i+++j
可理解為(i++)+j
不能理解為i+(++j)組合原則:
盡可能多地(自左而右)將若干個字符組成一個運算符67五、表達(dá)式的運算順序:
一般按從左至右、P365附錄III優(yōu)先級序數(shù)(1—先,7—后)進(jìn)行;(但賦值運算、自增、自減、負(fù)號運算、類型轉(zhuǎn)換等從右至左)優(yōu)先級高的先算
“左結(jié)合性”:自左至右的結(jié)合方向。算術(shù)運算符的結(jié)合性是自左至右,即先左后右。如:表達(dá)式x-y+z
(1)y應(yīng)先與“-”號結(jié)合,執(zhí)行x-y運算;(2)再執(zhí)行+z的運算。“右結(jié)合性”:自右至左的結(jié)合方向。最典型的右結(jié)合性運算符是賦值運算符。如:表達(dá)式x=y=z,由于“=”的右結(jié)合性,(1)先執(zhí)行y=z運算;(2)再執(zhí)行x=(y=z)運算。
C語言運算符中有不少為右結(jié)合性,應(yīng)注意區(qū)別,以避免理解錯誤。附錄III693.7
各類型數(shù)據(jù)的混合運算
在計算過程中、若某次運算時碰到運算對象為不同類型才需要進(jìn)行轉(zhuǎn)換,且由低向高轉(zhuǎn)換。注意邊計算邊轉(zhuǎn)換。但float型數(shù)據(jù)都要轉(zhuǎn)換成double型
char型與short型數(shù)據(jù)都要轉(zhuǎn)換成int型轉(zhuǎn)換規(guī)則如下圖:70intchar,shortdoublelongunsignedfloat低高P54例:設(shè)已定義floata=14.7;longc=5;計算13/5*a+(’a’+’b’)/c的步驟及轉(zhuǎn)換類型13/5*a+(’a’+’b’)/c12int2.0double14.7double229.4double97int98int3195int195long5long439long39double568.4double例:設(shè)定義floata;intb;從右至左運算表達(dá)式:a+=a*=(b=2)/(float)(int)(a=4.5)12int24.5float34int44.0float2.0double4.0double50.5double4.5float4.5double62.25double74.5double2.25double給a賦值給a賦值例:voidmain(){floatPI=3.14159;ints,r=5;s=r*r*PI;printf("s=%d\n",s);}
運行結(jié)果:s=78實型此語句將r和PI都轉(zhuǎn)換成double型計算結(jié)果為double型但由于s為整型,故賦值結(jié)果仍為整型,舍去了小數(shù)部分。743.8
不同類型賦值的結(jié)果賦給變量的數(shù)據(jù)類型、大小一般不受限制唯一限制:3.8.1變量或數(shù)據(jù)中含有實型的:
------值大小不變1、double型數(shù)據(jù)賦給float型,截取前7位有效數(shù)據(jù)。2、float型數(shù)據(jù)賦給double型,有效數(shù)據(jù)擴(kuò)展到16位,但范圍不能溢出。3、若把實型數(shù)據(jù)賦給整型變量,則舍去小數(shù)部分。
不允許給實型變量賦超出其所能表示范圍的數(shù)據(jù)例
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中語文第2單元孟子蚜1王好戰(zhàn)請以戰(zhàn)喻課件新人教版選修先秦諸子蚜
- 2024年吉林省長春市中考英語試題含解析
- 七年級下心理健康教育教案
- 2024年河北省高考生物試卷真題(含答案解析)
- 2024至2030年中國攻瑰茄行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年中國手持式多波長穩(wěn)定光源行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年中國印花T/C純棉休閑襯衫行業(yè)投資前景及策略咨詢研究報告
- 2024年山東省東營市中考語文試題含解析
- 2024年黑龍江省齊齊哈爾市中考語文試題含解析
- 2024年中國鋼絲跑道軸承市場調(diào)查研究報告
- 燃?xì)夤艿?流量-流速-口徑計算公式
- 華電架空輸電線路大作業(yè)
- 暗挖工程冬季施工措施
- 往生薦亡功德文疏
- 2021年春新教科版四年級下冊科學(xué) 2.3《簡易電路》教案含教學(xué)反思
- 相干反斯托克斯拉曼光譜cars-姚波善
- GB∕T 13331-2014 土方機械 液壓挖掘機 起重量
- (畢業(yè)論文)烷基化裝置危險性分析
- 赫爾曼的敘事學(xué)理論
- 醫(yī)學(xué)德語詞匯大全
- 化學(xué)品安全標(biāo)簽編寫規(guī)定_GB15258-2009
評論
0/150
提交評論