Câu lệnh, biểu thức và toán tử

7 307 1
Câu lệnh, biểu thức và toán tử

Đang tải... (xem toàn văn)

Thông tin tài liệu

Chỉång III : Cáu lãûnh, biãøu thỉïc v toạn tỉí Trang 16 Ch−¬ng III. CÁU LÃÛNH, BIÃØU THỈÏC, V TOẠN TỈÍ I. Cáu lãûnh: Cáu lãûnh l 1 chè thë hon chènh, ra lãûnh cho mạy tênh thỉûc hiãûn cäng viãûc no âọ. Cạc cáu lãûnh kãút thục båíi dáúu cháúm pháøy, thỉåìng âỉåüc viãút trãn 1 dng âãø chỉång trçnh r rng. Trçnh biãn dëch s b qua cạc kê tỉû khäng nhçn tháúy nhỉ tab, enter, spacebar, vç váûy 2 cáu lãûnh sau âáy l tỉång âỉång våïi nhau : x=y+z; v x = y + z ; Khong tràõng chè cọ nghéa trong xáu kê tỉû nhỉ “Dai hoc Da Nang” Våïi xáu kê tỉû âãø cọ thãø viãút trãn cạc dng khạc nhau thç ta phi dng kê tỉû \ . Vê dủ : int x,\ y,z; printf(“\nDai hoc \ Da Nang”); Cáu lãûnh âån gin l nhỉỵng lãûnh khäng chỉïa lãûnh khạc nhỉ phẹp gạn, låìi gi hm kiãøu void (hm khäng cọ giạ trë tr vãư), lãûnh nhy khäng âiãưu kiãûn. Cáu lãûnh cáúu trục l khäúi lãûnh, lãûnh thỉí v lãûnh r nhạnh, lãûnh làûp. II. Khäúi lãûnh: Khäúi lãûnh l mäüt nhọm cáu lãûnh âỉåüc bao båíi càûp dáúu ngồûc {}. Vê dủ : { cáu lãûnh 1; cáu lãûnh 2; cáu lãûnh n; } Nhỉỵng nåi cọ thãø âàût mäüt lãûnh âån thç cọ thãø âàût 1 khäúi lãûnh. Bãn trong khäúi lãûnh cọ thãø cọ khäúi lãûnh khạc. III. Biãøu thỉïc: Biãøu thỉïc bao gäưm cạc toạn hảng v toạn tỉí. Toạn hảng cọ thãø l biãún, hàòng, hm. Toạn tỉí l + - * / % & | Vê dủ : biãøu thỉïc tan(x)*y - 2 gäưm cạc toạn hảng l hm tan ca x, biãún y v hàòng 2; cạc toạn hảng l *, - . • Biãøu thỉïc säú hc l biãøu thỉïc cọ kãút qu l giạ trë säú hc. • Biãøu thỉïc logic l biãøu thỉïc cọ kãút qu l TRUE hồûc FALSE ( thäng qua 0 v 1). • Biãøu thỉïc quan hãû l cạc biãøu thỉïc logic âån gin, chỉïa cạc toạn tỉí quan hãû nhỉ >,<,>=,<=,==,!=. Cạc toạn hảng trong biãøu thỉïc ny khäng nháút thiãút phi tỉång thêch våïi nhau vãư kiãøu. Chỉång III : Cáu lãûnh, biãøu thỉïc v toạn tỉí Trang 17 IV. Toạn tỉí: Toạn tỉí l mäüt kê hiãûu nhàòm thỉûc hiãûn cạc tênh toạn trãn 1 hay nhiãưu säú hảng. IV.1. Phẹp tênh theo bit: Khäng ạp dủng cho kiãøu float v double Toạn tỉí nghéa & phẹp AND theo tỉìng bit | phẹp OR theo tỉìng bit ^ phẹp XOR theo tỉìng bit ~ phẹp âo tỉìng bit Vê dủ : 3 = 0000 0000 0000 0011 ~3 = 1111 1111 1111 1100 Ta cáưn phi phán biãût giỉỵa cạc toạn tỉí & v && : 3 & 4 = 0, 3 && 4 = 1. Tỉång tỉû nhỉ váûy våïi cạc toạn tỉí | v || : 3 | 4 = 7, 3 || 4 = 1. Ta dng cạc phẹp tênh theo bit âãø xoạ hồûc láûp cạc bit trong cạc säú nhë phán. Vê dủ : âãø láûp bit thỉï 0 v bit thỉï 3 ca säú ngun x, ta dng lãûnh x = x | 0x9; âãø xoạ bit thỉï 1 v bit thỉï 2 ca säú ngun x, ta dng lãûnh x = x & 0xF9; • Phẹp dëch säú hc >> v << : I<<M : dëch säú ngun I sang trại âi M bit, tỉång âỉång våïi I*2 M . I>>M : dëch säú ngun I sang phi âi M bit, tỉång âỉång våïi I/2 M . Vê dủ : âãø tênh I*20 ta viãút (I<<4) + (I<<2) vç 20 = 2 4 + 2 2 . Vê dủ : int i=0x123; i=i>>3; printf(“\n i=%#x”,i); 0x24 printf(“\n i=%#o”,i); 044 Chụ : 1. int i=0xFFFF; printf("\ni=%d",i) ; -1 i=i<<2; printf("\ni=%d",i) ; -4 2. int x=0xFFFF; x=x<<2; printf(“\nx=%#x”,x); Kãút qu: 0xFFFC; /* khäng phi x*2 2 */ 3. I>>M tỉång âỉång våïi I/2 M khi I > 0. Vê dủ: int i=-15; clrscr(); printf("\ni=%d",i) ; -15 i=i>>3; printf("\ni=%d",i) ; -2 Chỉång III : Cáu lãûnh, biãøu thỉïc v toạn tỉí Trang 18 IV.2. Phẹp gạn måí räüng : x+=y <=> x=x+y x-=y <=> x=x-y x*=y <=> x=x*y x/=y <=> x=x/y x%=y <=> x=x%y x>>=y <=> x=x>>y x<<=y <=> x=x<<y x&=y <=> x=x&y x|=y <=> x=x|y x^=y <=> x=x^y Chụ : a = a*b+c; khäng tỉång âỉång våïi a*=b+c; Vç a*=b+c; tỉång âỉång våïi a=a*(b+c); Viãûc dng phẹp gạn måí räüng cọ thãø gáy khọ hiãøu nhỉng nhiãưu bäü biãn dëch tảo ra m hiãûu qu hån nãúu ta dng nọ. IV.3. Phẹp tàng / gim giạ trë 1 âån vë (dng våïi cạc biãún): i=i+1 <=> i++ hồûc ++i i=i-1 <=> i-- hồûc --i Sỉû khạc nhau giỉỵa 2 lãûnh gạn a= ++i v a= i++ : ++i : tàng i lãn 1 âån vë, sau âọ måïi gạn. i++ : gạn trỉåïc, sau âọ måïi tàng i lãn 1 âån vë. Vê dủ : x=0;a=x++; // a=x; x++; : a=0, x=1; x=0;a=++x; // x++; a=x; : a=1,x=1; IV.4. Toạn tỉí quan hãû : Toạn tỉí nghéa == toạn hảng 1 cọ bàòng toạn hảng 2 khäng ? > toạn hảng 1 cọ låïn hån toạn hảng 2 khäng ? < toạn hảng 1 cọ nh hån toạn hảng 2 khäng ? >= toạn hảng 1 cọ låïn hån hồûc bàòng toạn hảng 2 khäng ? <= toạn hảng 1 cọ nh hån hồûc bàòng toạn hảng 2 khäng ? != toạn hảng 1 cọ khạc toạn hảng 2 khäng ? Ta cáưn phi phán biãût toạn tỉí quan hãû == v toạn tỉí gạn = IV.5. Toạn tỉí sizeof(): Toạn tỉí sizeof(x) tr lải säú byte m x chiãúm. Ta cn cọ thãø viãút sizeof(kiãøu_dỉỵ_liãûu) Vê dủ : float x; printf(“\n Kêch thỉåïc ca kiãøu säú thỉûc l : %d”, sizeof(x)); printf(“\n Kêch thỉåïc ca kiãøu säú ngun l : %d”, sizeof(int)); Chỉång III : Cáu lãûnh, biãøu thỉïc v toạn tỉí Trang 19 IV.6. Toạn tỉí âiãưu kiãûn : biãøu_thỉïc1 ? biãøu_thỉïc2 : biãøu_thỉïc3; Nãúu biãøu_thỉïc1 l âụng (khạc 0) thç giạ trë ca biãøu thỉïc trãn l biãøu_thỉïc2, nãúu biãøu_thỉïc1 l sai (bàòng 0) thç giạ trë ca biãøu thỉïc trãn l biãøu_thỉïc3. Vê dủ : Gi sỉí ta mún tçm giạ trë låïn nháút max ca 2 säú a v b. Ta cọ thãø viãút nhỉ sau : max = a > b ? a : b Nãúu a > b l TRUE thç max âỉåüc gạn bàòng a, nãúu khäng thç âỉåüc gạn bàòng b. Vê dủ: printf(“There %s %d fish”, (n>1) ? ”are”:”is”, n); printf("There %s %d dog%s", (n>1)?"are":"is", n, (n>1)?"s":""); V. Thỉï tỉû ỉu tiãn giỉỵa cạc phẹp toạn: Toạn tỉí Chiãưu tênh toạn () [] -> L → R - ++ -- ! ~ sizeof() &(âëa chè) *(con tr) toạn tỉí ẹp kiãøu : toạn tỉí 1 ngäi R → L * / % L → R + - L → R << >> L → R < <= >= > L → R == != L → R & L → R ^ L → R | L → R && L → R || L → R ? : R → L += -= *= /= %= &= ^= |= <<= >>= R → L Nãúu khäng nhåï thỉï tỉû thç ta cọ thãø dng cạc dáúu ngồûc âån (). Nãúu cạc toạn tỉí cng cáúp thç lm theo chiãưu tênh toạn. Ta khäng nãn viãút : x = f ( .) + g ( .); nãúu 1 trong 2 hm f v/hồûc g cọ thãø lm thay âäøi giạ trë ca cạc biãún truưn cho hm cn lải. C khäng chè r hm no s âỉåüc thỉûc hiãûn trỉåïc. Tỉång tỉû : * printf("%d %d\n", ++n, power(2, n)); /* sai */ * a[i] = i++; VI. Sỉû hiãûu chènh khi tênh toạn : Ngän ngỉỵ C cho phẹp sỉû träün láùn cạc toạn hảng thüc cạc kiãøu khạc nhau. VI.1. Sỉû chuøn âäøi säú hc : Chỉång III : Cáu lãûnh, biãøu thỉïc v toạn tỉí Trang 20 Viãûc chuøn âäøi kiãøu giạ trë xy ra tỉû âäüng khi trong biãøu thỉïc cọ cạc toạn hảng khạc kiãøu. Viãûc chuøn âäøi kiãøu giạ trë cng xy ra khi gạn giạ trë kiãøu ny cho biãún (hồûc pháưn tỉí mng) kiãøu kia, khi truưn giạ trë cạc âäúi säú cho cạc tham säú, trong cáu lãûnh return. int → long → float → double → long double. Khi chuøn âäøi theo chiãưu ngỉåüc lải thç s bë máút mạt thäng tin, cọ thãø cọ cnh bạo nhỉng khäng cọ läùi. Vê dủ: int n; long p; float x,s; s=n*p+x; âáưu tiãn khi tênh n*p, n âỉåüc âäøi thnh kiãøu long. Têch cọ kiãøu long nãn khi tênh täøng, têch âỉåüc chuøn thnh kiãøu float. Täøng cọ kiãøu float s âỉåüc gạn cho s. VI.2. Sỉû ỉu tiãn cho kiãøu säú : Cạc phẹp tênh säú hc khäng âënh nghéa cho kiãøu char v short. C tỉû âäüng hiãûu chènh kiãøu char v kiãøu short thnh kiãøu int. VI.3. Chuøn âäøi âäúi våïi kiãøu kê tỉû char: Kiãøu kê tỉû char khi åí trong biãøu thỉïc säú hc s âỉåüc chuøn âäøi thnh kiãøu int dỉûa vo bng m ASCII. Vê dủ : char ch; ch = ‘A’ + 1; // ‘A’=65 nãn ‘A’+1=66 tỉì âọ ch=’B’ VII. Cäú chuøn âäøi kiãøu giạ trë: Âãø nháûn âỉåüc kãút qu mong mún âäi khi ta phi chuøn âäøi kiãøu ca giạ trë. Vê dủ : #include <stdio.h> #include <conio.h> main() { int m,n; float x; m=3;n=2; x=m/n; // phẹp chia láúy pháưn ngun, sau âọ chuøn sang kiãøu float âãø gạn vo x printf(“\n Khi chua chuyen doi : m/n = %f”,x); printf(“\n Khi da chuyen doi : m/n = %f”,(float)m/n); getch(); return 0; } ÅÍ âáy (float)m cọ nghéa l chuøn âäøi n sang kiãøu säú thỉûc. Khi âọ (float)m/n l phẹp chia giỉỵa 2 säú thỉûc. Ta cọ thãø viãút (float)(m) hồûc (float)m. Chỉång III : Cáu lãûnh, biãøu thỉïc v toạn tỉí Trang 21 VIII. Cạc hm säú hc chøn: Cạc hm säú hc chøn nháûn cạc âäúi säú l cạc säú ngun hồûc säú thỉûc, cạc hm ny nàòm trong file math.h. Vç váûy trỉåïc khi sỉí dủng ta cáưn khai bạo #include <math.h> Hm nghéa int abs(int i) tr lải giạ trë tuût âäúi ca säú ngun i double fabs(double d) tr lải giạ trë tuût âäúi ca säú thỉûc d double sin(double d) tr lải hm sin double cos(double d) tr lải hm cos double cosh(double d) tr lải hm ch (hyberbolic) double tan(double d) tr lải hm tg double exp(double d) tr lải giạ trë e m d double log(double d) tr lải hm loga cå säú e double log10(double d) tr lải hm loga cå säú 10 double pow(double d1, double d2) tr lải giạ trë d1 m d2 double floor(double d) tr lải hm càõt trn säú double ceil(double d) tr lải hm lm trn säú double fmod(double d1, double d2) tr lải hm pháưn dỉ ca phẹp chia d1/d2 double sqrt(double d) tr lải hm càn báûc hai void srand(double d) khåíi tảo bäü säú ngáùu nhiãn Vê dủ : floor(3.2) = 3. floor(3.7) = 3. ceil(3.2) = 4. ceil(3.7) = 4. Âãø lm trn cạc säú thỉûc tỉì 2.5 âãún cáûn 3.5 thnh 3 ta dng floor(i+0.5) IX. Bi táûp : 1. Gi sỉí ta cọ : float x,y; x=(int)3.4; y=(int)3.8; Tênh x,y. (3,3) 2. Gi sỉí ta cọ : int x=3,y=5; x=y++; y=++x; Tênh x,y. ( 6,6) 3. float x,y; x=14/5; y=(float)14/5; Tênh x,y. ( 2.000 , 2.8 ) 4. Tênh 10101 | 11001, 10101 & 11001 Chổồng III : Cỏu lóỷnh, bióứu thổùc vaỡ toaùn tổớ Trang 22 5. Ban õỏửu 4 sọỳ x,y,z,t õóửu bũng 5. Thổỷc hióỷn caùc lóỷnh : y=x++; t=++z; Hoới kóỳt quaớ cuọỳi cuỡng cuớa 4 sọỳ trón. 6. Lỏỷp lóỷnh tờnh bióứu thổùc : )(cos3)tan( 2 xx ez + = 7. Vióỳt chổồng trỗnh nhỏỷp 4 sọỳ nguyón, tờnh tọứng 2 sọỳ nguyón ồớ giổợa Vờ duỷ : nhỏỷp 4 sọỳ a <= b <= c <= d , xuỏỳt ra b + c. 8. Vióỳt õoaỷn lóỷnh tờnh haỡm dỏỳu nhổ sau : > = < = 0 n nóỳu 0 n nóỳu0 0 n nóỳu 1 1 )(nsign Lồỡi giaới: Caùch 1: sign = n > 0 ? 1 : 0 ; sign = n < 0 ? -1: sign ; Caùch 2: sign = n > 0 ? 1 : ( n == 0 ? 0 : -1 ) ; Hoỷc sign = n > 0 ? 1 : ( n < 0 ? -1 : 0 ) ;

Ngày đăng: 02/10/2013, 20:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan