第3章 數(shù)據(jù)類型、運算符及表達式_第1頁
第3章 數(shù)據(jù)類型、運算符及表達式_第2頁
第3章 數(shù)據(jù)類型、運算符及表達式_第3頁
第3章 數(shù)據(jù)類型、運算符及表達式_第4頁
第3章 數(shù)據(jù)類型、運算符及表達式_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章數(shù)據(jù)類型、運算符與表達式數(shù)據(jù)類型常量與變量不同類型數(shù)據(jù)間的轉換運算符和表達式各種進制之間的轉換(整數(shù))二進制、八進制、十六進制轉換成十進制方法:按權相加十進制轉換成二進制、八進制、十六進制原理:方法:連續(xù)除以基,從低到高記錄余數(shù),直至商為0例把十進制數(shù)59轉換成二進制數(shù)5922921427232120(59)10=(111011)2110111111011余余余余余余例把十進制數(shù)159轉換成八進制數(shù)1598198280(159)10=(237)8237余7余3余2例把十進制數(shù)459轉換成十六進制數(shù)4591628161160(459)10=(1CB)161CB余11余12余1語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C二進制與八進制之間的轉換二進制轉換成八進制:從右向左,每3位一組(不足3位左補0),轉換成八進制八進制轉換成二進制:用3位二進制數(shù)代替每一位八進制數(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ù)類型、運算符與表達式C二進制與十六進制之間的轉換二進制轉換成十六進制:從右向左,每4位一組(不足4位左補0),轉換成十六進制十六進制轉換成二進制:用4位二進制數(shù)代替每一位十六進制數(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ù)類型、運算符與表達式C字節(jié)和位內(nèi)存以字節(jié)為單元組成每個字節(jié)有一個地址一個字節(jié)一般由8個二進制位組成每個二進位的值是0或101234567012345678910……...<>7643251語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C數(shù)值的表示方法——原碼、反碼和補碼原碼:最高位為符號位,其余各位為數(shù)值本身的絕對值反碼:正數(shù):反碼與原碼相同負數(shù):符號位為1,其余位對原碼取反補碼:在計算機系統(tǒng)中,數(shù)值一律用補碼來表示正數(shù):原碼、反碼、補碼相同負數(shù):最高位為1,其余位為原碼取反,再對整個數(shù)加13126912457810119-5=49+7=16=12+4<>語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C原碼反碼補碼+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000數(shù)的范圍01111111~11111111(-127~+127)01111111~10000000(-127~+127)01111111~10000000(-128~+127)(用一字節(jié)表示數(shù))負數(shù)補碼轉換成十進制數(shù):最高位不動,其余位取反加1例補碼:11111001

取反:10000110

加1:10000111=-7<>語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C011111

11

11

11

11

11int型:最大:32767100000

00

00

00

00

00最小:-327681111

11

11

11

11

11

11unsignedint型:最大:655350000

00

00

00

00

00

00最小:0語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C本章介紹C語言的基礎,包括:數(shù)據(jù)類型運算符和表達式均是程序設計的基本知識為什么討論這些知識?因為用計算機解決問題其實就是對數(shù)據(jù)進行處理。通常是利用程序對數(shù)據(jù)進行操作處理:處理的對象是數(shù)據(jù)通過運算符和表達式進行操作例如:【例3.0】計算圓的面積,半徑為5cm。

程序如下:main(){float

r,area;

r=5;

area=3.14*r*r;

printf("%f\n",

area);}運算結果是輸出圓的面積:78.500000程序中用到的數(shù)據(jù):r、area、5、3.14對數(shù)據(jù)進行的運算:*、=例jc2_1分析:計算機操作處理時,要完成以下工作:在內(nèi)存中給半徑r和運算結果area

開辟存儲空間,存放它們的值。應該留多大的地方來存放它們的值?數(shù)據(jù)

5

和3.14

與r

、area

不同,它們是在編寫程序時就給出確定的值,在運算過程中不會改變。這樣的數(shù)計算機怎么處理?對整數(shù)5

和小數(shù)3.14

,計算機存放時是否有區(qū)別?涉及數(shù)據(jù)類型的基本知識計算機解決不同的問題時需要不同類型的數(shù)據(jù),那么不同類型的數(shù)據(jù)就有不同的存儲方式,并且,允許的運算也就不同。計算機中存儲和運算的數(shù)據(jù)都有一定的類型。

C語言提供了豐富的數(shù)據(jù)類型:3.1

數(shù)據(jù)類型數(shù)據(jù)類型總表<>C數(shù)據(jù)類型基本類型構造類型指針類型空類型void定義類型typedef字符類型char枚舉類型enum整型實型單精度型float雙精度型double數(shù)組結構體struct共用體union短整型short長整型long整型int數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進行的操作語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C基本數(shù)據(jù)類型<>類型符號關鍵字數(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ù)隨機器硬件不同而不同,上表以IBMPC機為例:語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C一般用大寫字母是宏定義預處理命令,不是C語句直接常量:整型常量實型常量字符常量字符串常量如#definePRICE30常量定義:程序運行時其值不能改變的量(即常數(shù))分類:符號常量:用標識符代表常量定義格式:#define

符號常量常量>>>><>例3.1符號常量舉例(ch2_1.c)#definePRICE30main(){

intnum,total;num=10;total=num*PRICE;

printf("total=%d",total);}運行結果:total=3003.2

常量與變量語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C整型常量(整常數(shù))三種形式:十進制整數(shù):由數(shù)字0~9和正負號表示.如123,-456,0八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.如0123,011十六進制整數(shù):由0x開頭,后跟0~9,a~f,A~F表示.如0x123,0Xff<例12與12L例30000為int型65536為longint

型整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型在整常量后加字母l或L,認為它是longint

型常量問題:0123=()100x123=()100Xff=()1083291255問題:0123=()100x123=()100Xff=()10語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C實型常量(實數(shù)或浮點數(shù))表示形式:十進制數(shù)形式:(必須有小數(shù)點)如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

<實型常量的類型默認double型在實型常量后加字母f或F,認為它是float型語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C字符常量定義:用單引號括起來的單個普通字符或轉義字符.

字符常量的值:該字符的ASCII碼值<轉義字符及其含義:轉義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉義字符含義換行垂直制表回車響鈴單引號3位8進制數(shù)代表的字符水平制表退格換頁反斜線雙引號2位16進制數(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’轉義字符:反斜線后面跟一個字符或一個代碼值表示例轉義字符舉例(ch2_2.c)

main(){printf("\101\x42C\n");

printf("Isay:\"Howareyou?\"\n");

printf("\\CProgram\\\n");

printf("Turbo\'C\'");}運行結果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’例main(){printf(“Y\b=\n”);}運行結果:屏幕顯示:=打印機輸出:¥<字符常量與字符串常量不同字符串常量定義:用雙引號(“”)括起來的字符序列存儲:每個字符串尾自動加一個‘\0’作為字符串結束標志hello\0例字符串“hello”在內(nèi)存中aa\0例‘a(chǎn)’“a”例空串“”\0例:charch;

ch=“A”;例:charch;

ch=‘A’;語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元…...地址inta=1,b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址…...內(nèi)存1-3隨機數(shù)變量概念:代表內(nèi)存中具有特定屬性的一個存儲單元,程序運行期間其值可以改變的量,用標識符表示變量名與變量值,通過變量名來存取變量值變量定義的一般格式:

數(shù)據(jù)類型變量1[,變量2,…,變量n];<>變量初始化:定義時賦初值例:

inta,b,c;floatdata;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標識符例:

inta=2,b,c=4;floatdata=3.67;charch=‘A’;

intx=1,y=1,z=1;

intx=y=z=1;變量的使用:先定義,后使用例1

intstudent;

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ù)類型、運算符與表達式Ca510變量值為變量分配的存儲單元變量名例如:有變量a它的值是510整型變量占字節(jié)數(shù)隨機器不同而不同,一般占2字節(jié)short≤int≤long可用sizeof(類型標識符)測量整型變量的類型基本整型int

,分配2Byte短整型shortint,分配2Byte長整型longint,分配4Byte整型數(shù)據(jù)均以二進制補碼形式存儲問題:為什么要采用補碼?如何表示?計算機中正、負數(shù)的表示例如:109=(1101101)2要區(qū)別:+109和-109方法是:將符號也數(shù)碼化即:正的符號+用

0

表示 負的符號-用

1

表示∴計算機中的數(shù)表示方法是:

符號位+二進制數(shù)值(以8bit為例)

+109→+1101101→01101101

-109→-1101101→11101101問題:計算機計算復雜化例如計算:

(-19)+(+22)

10010011+00010110解決的方法是:使用補碼的表示方法(按前述表示的編碼稱為原碼),使用補碼,可以將符號位和其它位統(tǒng)一處理;同時,減法也可按加法來處理。另外,兩個用補碼表示的數(shù)相加時,如果最高位(符號位)有進位,則進位被舍棄。需要判斷符號是否相同:如果相同,結果符號不變,并進行絕對值相加如果不同,結果取絕對值大的數(shù)的符號,并進行絕對值相減原碼、反碼和補碼正數(shù):原碼、反碼、補碼相同符號位為0,數(shù)值為對應的二進制數(shù)。+19[00010011]原=[00010011]反=[00010011]補負數(shù):原碼符號位為1,數(shù)值為絕對值的二進制數(shù)。

-19 [10010011

]原反碼符號位為1,數(shù)值為絕對值的二進制數(shù)各位變反。

-19 [11101100]反

補碼符號位為1,數(shù)值為絕對值的二進制數(shù)各位變反加1。-19 [11101101]補則計算:

(-19)+(+22)就直接進行加法運算

11101101+00010110

00000011還可分為有符號和無符號整型數(shù)據(jù)有符號的整型數(shù)據(jù)signedint無符號的整型數(shù)據(jù)unsignedint區(qū)別是將最高位看作符號位還是數(shù)據(jù)位例如:

1111111110101000作為有符號數(shù)使用時,最高為符號位為負數(shù),值是:-88(再求一次補)作為無符號數(shù)使用時,最高為數(shù)據(jù)位為無符號的數(shù),值是:65448例如:main(){unsignedintm;m=65448;

printf("\nm=%d\n",m);

printf("m=%u\n",m);}輸出結果:m=-88m=65448按有符號數(shù)輸出按無符號數(shù)輸出實型變量float:占4字節(jié),提供7位有效數(shù)字double:占8字節(jié),提供15~16位有效數(shù)字字符型變量字符變量存放字符ASCII碼char與int數(shù)據(jù)間可進行算術運算例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ù)類型、運算符與表達式C實型變量float:占4字節(jié),提供7位有效數(shù)字double:占8字節(jié),提供15~16位有效數(shù)字<>單精度實型指數(shù)部分小數(shù)部分

小數(shù)的符號位指數(shù)的符號位例/*ch2_4.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);}宏定義變量定義輸出結果運行結果:total=37.500000,ch1=d語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C3.3不同類型數(shù)據(jù)間的轉換隱式轉換什么情況下發(fā)生運算轉換------不同類型數(shù)據(jù)混合運算時賦值轉換------把一個值賦給與其類型不同的變量時輸出轉換------輸出時轉換成指定的輸出格式函數(shù)調(diào)用轉換------實參與形參類型不一致時轉換運算轉換規(guī)則:不同類型數(shù)據(jù)運算時先自動轉換成同一類型<>語言程序設計第三章數(shù)據(jù)類型、運算符與表達式Cdoublefloatlongunsignedintchar,short低高說明:必定的轉換運算對象類型不同時轉換例charch;

inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a(chǎn)’+i*f-d/l例inti;floatf;doubled;longl;<>顯式轉換(強制轉換)一般形式:(類型名)(表達式)例

(int)(x+y)(int)x+y(double)(3/2)(int)3.6說明:強制轉換得到所需類型的中間變量,原變量類型不變例main(){floatx;

inti;x=3.6;i=(int)x;

printf(“x=%f,i=%d”,x,i);}結果:x=3.600000,i=3精度損失問題較高類型向較低類型轉換時可能發(fā)生<>語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C3.4

運算符和表達式C運算符算術運算符:(+-*/%++--)關系運算符:(<<===>>=!=)邏輯運算符:((!&&||)位運算符:(<<>>~|^&)賦值運算符:(=及其擴展)條件運算符:(?:)逗號運算符:(,)指針運算符:(*&)求字節(jié)數(shù):(sizeof)強制類型轉換:(類型)分量運算符:(.->)下標運算符:([])其它:(()-)<>語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C表達式的有關概念什么是表達式由運算符將運算對象連接成的式子,它描述了一個具體的求值運算過程。計算表達式的值按照運算符的運算規(guī)則求值求值時注意運算符的優(yōu)先級和結合性例如:表達式:150+'b'*2-12.456b=(++a)-2a/=a*=(a=2)f=a>b>c--a||++b&&c++max=a>b?a:ba=3,a+=3,a*a 1/(float)a+6學習運算符應注意:運算符功能與運算量關系要求運算量個數(shù)要求運算量類型運算符優(yōu)先級別結合方向結果的類型<>語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C算術運算符和表達式基本算術運算符:+-*/%結合方向:從左向右優(yōu)先級:----->*/%----->+-(2)(3)(4) 說明:“-”可為單目運算符時,右結合性兩整數(shù)相除,結果為整數(shù)%要求兩側均為整型數(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ù)類型、運算符與表達式C自增、自減運算符++--作用:使變量值加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ù)類型、運算符與表達式C說明:++--不能用于常量和表達式,如5++,(a+b)++++--結合方向:自右向左優(yōu)先級:-++-------->*/%----->+-(2)(3)(4)例-i++-(i++)i=3;printf(“%d”,-i++);//-3

例j+++k;(j++)+k;例-i++i=3;printf(“%d”,-i++);問題:當上述語句執(zhí)行完輸出后,i的值為多少?語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C如果有多個運算符連續(xù)出現(xiàn)時,C系統(tǒng)盡可能多的從左到右將字符組合成一個運算符例如:

i+++j

等價于(i++)+j

-i+++-j

等價于-(i++)+(-j)

賦值運算符和表達式簡單賦值運算符符號:=格式:變量標識符=表達式作用:將一個數(shù)據(jù)(常量或表達式)賦給一個變量復合賦值運算符種類:+=-=*=/=%=《=》=&=^=|=含義:exp1op=exp2exp1=exp1opexp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3<>例a=3;d=func();c=d+2;最易出錯語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C說明:結合方向:自右向左優(yōu)先級:14左側必須是變量,不能是常量或表達式賦值表達式的值與變量值相等,且可嵌套賦值轉換規(guī)則:使賦值號右邊表達式值自動轉換成其左邊變量的類型例3=x-2*y;a+b=3;例

floatf;

inti;i=10;f=i;則

f=10.0例inti;i=2.56;//結果i=2;例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)<>//表達式值為5,a,b,c值為5//b=5;a=5//表達式值11,c=6,a=11//表達式值10,a=10,b=4,c=6//表達式值5,a=5,b=10,c=2語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C說明:結合方向:自右向左優(yōu)先級:14左側必須是變量,不能是常量或表達式賦值表達式的值與變量值相等,且可嵌套賦值轉換規(guī)則:使賦值號右邊表達式值自動轉換成其左邊變量的類型例:a=12;a+=a-=a*a例:inta=2;a%=4-1;a+=a*=a-=a*=3;<>//a=-264等價于a=a+(a=a-(a*a))//a=0等價于a=a+(a=a*(a=a-(a=a*3)))語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C逗號運算符和表達式形式:表達式1,表達式2,……表達式n結合性:從左向右優(yōu)先級:15逗號表達式的值:等于表達式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,表達式值60//a=15,表達式值20//賦值表達式,表達式值18,x=18//逗號表達式,表達式值18,x=3//1,2,3//3,2,3語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C逗號運算符和表達式形式:表達式1,表達式2,……表達式n結合性:從左向右優(yōu)先級:15逗號表達式的值:等于表達式n的值用途:常用于循環(huán)for語句中例:/*ch2_6.c*/#include<stdio.h>main(){intx,y=7;floatz=4;x=(y=y+6,y/z);

printf("x=%d\n",x);}運行結果:x=3<>注意:x的類型與結果語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C關系運算符和表達式關系運算符種類:<<===>=>!=結合方向:自左向右優(yōu)先級別:6、7<<=>>===!=優(yōu)先級6(高)優(yōu)先級7(低)關系表達式的值:是邏輯值“真”或“假”,用1和0表示例inta=3,b=2,c=1,d,f;a>b(a>b)==cb+c<ad=a>bf=a>b>c<>//表達式值1//表達式值1//表達式值0//d=1//f=0例c>a+b//c>(a+b)a>b!=c//(a>b)!=ca==b<c//a==(b<c)a=b>c//a=(b>c)注意:不同運算符的優(yōu)先級語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C關系運算注意:<>例若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結果為‘A’>100結果為10例若a=0;b=0.5;x=0.3;

則b<=x<=a的值為1語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C關系運算注意:例注意區(qū)分“=”與“==”

inta=0,b=1;

if(a==b)

printf(“aequaltob”);else

printf(“anotequaltob”);例應避免對實數(shù)作相等或不等的判斷如1.0/3.0*3.0==1.0可改寫為:fabs(1.0/3.0*3.0-1.0)<1e-6語言程序設計第三章數(shù)據(jù)類型、運算符與表達式Cab!a!ba&&ba||b真假真假假假真真邏輯運算符和表達式邏輯運算符種類:!&&||邏輯運算真值表C語言中,運算量:0表示“假”,非0表示“真”,

運算結果:0表示“假”,1表示“真”,<>真假假假假假真真假假真真真假真真語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C!(2)&&(11)||(12)高低例a<=x&&x<=b

a>b&&x>ya==b||x==y!a||a>b優(yōu)先級:結合方向:!:從右向左&&:從左向右||:從左向右<>//(a<=x)&&(x<=b)//(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)問題:如何將代數(shù)式-1≤x≤1和x≤-1或x≥1用邏輯運算符表示?語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C!(2)&&(11)||(12)高低優(yōu)先級:結合方向:!:從右向左&&:從左向右||:從左向右例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ù)類型、運算符與表達式C!(2)&&(11)||(12)高低優(yōu)先級:結合方向:!:從右向左&&:從左向右||:從左向右短路特性:邏輯表達式求解時,并非所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行該運算符<>例a&&b&&c//只在a為真時,才判別b的值;只在a、b都為真時,才判別c的值例a||b||c//只在a為假時,才判別b的值;只在a、b都為假時,才判別c的值例a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)//結果m=0,n=0語言程序設計第三章數(shù)據(jù)類型、運算符與表達式C關系與邏輯運算符的應用表示數(shù)學公式a>b>c判斷a,b,c三條線段能否組成一個三角形a,b不同時為負a+b>c&&a+c>b&&b+c>aa>=0||b>=0!(a<0&&b<0)(a<0&&b>=0)||(a>=0&&b<0)||(a>=0&&b>=0)a>b&&b>c條件運算符與表達式一般形式:expr1?expr2:expr3執(zhí)行過程功能:相當于條件語句,但不能取代一般if語句例if(a>b)

printf(“%d”,a);else

printf(“%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條件運算符可嵌套

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

如a>b?a:c>d?c:da>b?a:(c>d?c:d)expr1、expr2、expr3類型可不同,表達式值取較高的類型<>例x?‘a(chǎn)’:‘b’//x=0,表達式值為‘b’;x?0,表達式值為‘a(chǎn)’x>y?1:1.5//x>y,值為1.0;x<y,值為1.5語言程序設計第三章數(shù)據(jù)類型、運算符與

溫馨提示

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

評論

0/150

提交評論