Operators
Program တစ္ခုမွ ေဒတာေတြကို ကိုင္ေဆာင္ထားတဲ႔ variable ေတြကအေရးႀကီးသလို ကိုယ္လုပ္ခ်င္တဲ႔ Operation ေတြ ကိုလုပ္နိုင္ဖို႔ Operator ေတြသံုးတက္ဖို႔လည္း အေရးႀကီးပါတယ္ ။ Operator ေတြကိုသံုးတဲ႔ေနရာေတြအလုိက္ အမ်ိဳးစားေတြခြဲျခားၿပီးသံုးနိုင္ပါတယ္ ။
(၁) Assignment Operators
(၂)Arithmetic Operators
(၃)Logical Operators
(၄)Bitwise Operators
(၅)Relational Operators
(၆)Increase and Decrease Operators
(၇)Conditional Operators
(၈)Comma Operator
(၉)Compound Assignment Operators
(၁) Assignment Operators ( = )
Data Value ေတြ ကို Variable ထဲထည့္ခ်င္တဲ႔အခါ assignment Operator ကိုသံုးပါတယ္ ။ Operator ရဲ့ညာဘက္မွာရွိတဲ႔ value ဟာ Operator ရဲ့ ဘယ္ဘက္မွာရွိတဲ႔ Variable ထဲကိုဝင္ပါတယ္ ။ သူက Right_to_Left အလုပ္လုပ္ပါတယ္ ။
ဥပမာ --- a = 5; // Variable a ထဲကို 5 ဆိုတဲ႔တန္ဖိုးထည့္လိုက္တာပါ ။
(၂)Arithmetic Operators
1. Addition ( + )
2. Substraction ( - )
3. Multiplication ( * )
4. Division ( / )
5. Modulus ( % ) // အၾကြင္းတန္ဖိုးယူ
တို႔ျဖစ္ပါတယ္ ။ သခ်ာၤဆိုင္ရာတြက္တာခ်က္တာေတြလုပ္တဲ႔အခါ မွာသံုးပါတယ္ ။
ဥပမာ --- c=a+b ; c=a-b ; c=a*b ; c=c/b ; c=11%3; etc .
(၃)Logical Operators
1. AND ( && )
2. OR ( || )
3. NOT ( ! )
တို႔ျဖစ္ပါတယ္ ။ ဒါမဟုတ္ခဲ႔လွ်င္ ။ ဒါေတြထဲကႏွစ္ခုလံုးျဖစ္ခဲ႔လွ်င္ ။ ဒီ ႏွစ္ခုထဲက တစ္ခုမဟုတ္တစ္ခုျဖစ္ခဲ႔ရင္ စ တဲ႔ ေလာ႔ဂ်စ္ပိုင္းအရတြက္ခ်က္ရမဲ႔ အေျခအေနေတြမွာ Logical Operator ေတြကိုသံုးပါတယ္ ။
ဥပမာ ---
! Operator
!(5 == 5) // evaluates to false because the expression at its right (5 == 5) is true.
!(6 <= 4) // evaluates to true because (6 <= 4) would be false.
!true // evaluates to false
!false // evaluates to true.
&& OPERATOR
a b a && b
true true true
true false false
false true false
false false false
|| OPERATOR
a b a || b
true true true
true false true
false true true
false false false
( (5 == 5) && (3 > 6) ) // evaluates to false ( true && false ).
( (5 == 5) || (3 > 6) ) // evaluates to true ( true || false ).
(၄)Bitwise Operators
1. And ( & )
2. Or ( | )
3. Not ( ~ )
4. Xor ( ^ )
5. Left shift ( << )
6. Right Shift ( >> )
တို႔ျဖစ္ၾကပါတယ္ ။ Bittwise Operator ေတြက ေတာ႔ data value ေတြကို bits ေတြအေနနဲ႔တြက္ခ်က္ေပးရာမွာသံုးပါတယ္ ။ bit ဆိုတာဘာလဲဆိုတာေတာ႔ ကြန္ပ်ဴတာနဲ႔ရင္းႏွီးၿပီးသားသူေတြေတာ္ေတာ္မ်ားမ်ားသိၿပီးျဖစ္မွာပါ ။
1. And ( & )
Operator AND ရဲ့အလုပ္လုပ္ပံုကေတာ ႔ True ၂ ခုျဖစ္ရင္ True က်န္တာအားလံုး False ပါ ။
ဥပမာ ---
1 0 1 0 &
0 1 1 0
--------
0 0 1 0
ျဖစ္တာေၾကာင္႔ 10 & 6 = 2 လို႔ အေျဖထြက္ပါတယ္ ။
2. Or ( | )
Operator OR ( | ) ရဲ့အလုပ္လုပ္ပံုကေတာ႔ False 2 ခုျဖစ္တဲ႔အခ်ိန္မွ False ျဖစ္ၿပီး က်န္တာအားလံုး က True ပါ
ဥပမာ ---
1 0 1 0 |
0 1 1 0
--------
1 1 1 0
ျဖစ္တာေၾကာင္႔ 10 | 6 = 14 လို႔ အေျဖရပါတယ္ ။
3. Not ( ~ )
0 0 0 1 = 1 ပါ
အဲဒါကို ~ လုပ္မယ္ဆိုရင္ ၀ (သုည) ဆိုရင္ ၁ ဝင္ၿပီး ၁ ေနရာေတြမွာ ၀ ခ်ိန္းေပးသြားပါတယ္ ။ 1 1 1 0 ျဖစ္သြားမွာပါ ။
အဲဒါဆိုေတာ႔ ~ 1 ဆိုရင္ 14 ရမွာျဖစ္ပါတယ္ ။ ဒါေပမဲ႔ အဲဒါက bits အေရအတြက္ေပၚမွာလည္းမူတယ္ပါေသးတယ္ ။
16 its တို႔ 32 bits တို႔ ျဖစ္ခဲ႔မယ္ဆိုရင္ ေတာ႔အခုထက္ပိုသြားမွာပါ ။
4. Xor ( ^ )
XOR ကေတာ႔ မတူရင္ True တူရင္ False ပါ ။
1 0 1 0 ^
0 1 1 0
--------
1 1 0 0
ျဖစ္တဲ႔အတြက္ 10 နဲ႔ 6 ကို XOR လုပ္မယ္ဆိုရင္ 12 ရမွာျဖစ္ပါတယ္ ။
5 . Left shift ( << )
Left shift Operator ရဲ့ လုပ္ေဆာင္ မွု ကေတာ႔ x << y ဆိုရင္ x*2y ျဖစ္ပါတယ္ ။
အဲဒီေတာ႔ 10 << 2 = 10 * 2*2 ျဖစ္တဲ႔အတြက္ အေျဖ က ၄၀ ရမွာပါ ။
6. Right Shift ( >> )
Right Shift Operator ရဲ့လုပ္ေဆာင္ပံု ကေတာ႔ x >> y ဆိုရင္ x/2y ပါ ။ဒါေၾကာင္႔ 20 >> 2 = 20/2*2 ျဖစ္တာေၾကာင္႔ အေျဖ က 5 ရမွာျဖစ္ပါတယ္ ။
(ကၽြန္ေတာ္ကေတာ႔ >> နဲ႔ << ေတြ ကို ေမ႔မွာစိုးလို႔ လက္ေျမွာက္ ရိုက္စား လုိ႔ လူၿပိန္း နည္းမွတ္ထား ပါတယ္ ။ .. :P )
ဒီေလာက္ဆိုရင္ Bitwise Operator ေတြအေၾကာင္း တီးမိေခါက္မိရွိေလာက္မယ္ထင္ပါတယ္ ။
(၅)Relational Operators
Relational Operators ေတြကေတာ႔ အေျခအေန တစ္ခုနဲ႔တစ္ခု ဆက္ႏႊယ္မွုေတြ ျဖစ္တဲ႔အခါ ၊ ႏွိဳင္းယွဥ္မွဳေတြျပဳတဲ႔အခါ မွာ သံုးပါတယ္ ။
Equal ( == )
Not Equal ( != )
Greater than ( > )
Less than ( < )
Greater than or Equal ( >= )
Less than or Equal ( <= )
တို႔ျဖစ္ၾကပါတယ္ ။ သူတို႔ေတြရဲ့အသံုးျပဳပံုေလးေတြကိုေတာ႔ ေအာက္မွာေလ႔လာၾကည့္ပါ ။
(7 == 5) // evaluates to false.
(5 > 4) // evaluates to true.
(3 != 2) // evaluates to true.
(6 >= 6) // evaluates to true.
(5 < 5) // evaluates to false.
(a == 5) // evaluates to false since a is not equal to 5.
(a*b >= c) // evaluates to true since (2*3 >= 6) is true.
(b+4 > a*c) // evaluates to false since (3+4 > 2*6) is false.
((b=2) == a) // evaluates to true.
(၆)Increase and Decrease Operators
Increse ( ++ )
Decrease ( -- )
တန္းဖိုးေတြအတိုးအေလ်ာ႔လုပ္ခ်င္တဲ႔အခါမွာသံုး ပါတယ္ ။ အမ်ားအားျဖင္႔ေတာ႔ loop ေတြမွာအသံုးမ်ားတာေတြ႔ရပါတယ္ ။ ဥပမာ ---
B = 3;
A = B++; ဆိုရင္ A တန္ဖိုးကိုထုတ္ၾကည့္တဲ႔အခါ မွာ 4 ရမွာျဖစ္ပါတယ္ ။ ဘာနဲ႔ သေဘာထားခ်င္းတူလဲဆိုေတာ႔ A=A+1; A+=1 ;A++ ; တို႔နဲ႔ သေဘာထားခ်င္းတူပါတယ္ ။ A=B-- ; ဆိုရင္ေတာ႔ A ရဲ့တန္ဖိုး က 2 ျဖစ္သြားမွာပါ ။ A=A-1;A-=1;A-- ; တို႔က အတူတူပဲျဖစ္ပါတယ္။
(၇)Conditional Operators ( ? : )
Conditional Operator ကေတာ႔ ပထအေျခေနတစ္ခု ကိုေဖာ္ျပၿပိး ဒါဟုတ္သလားဆိုတာေမးပါတယ္ ။ တကယ္လို႔ ဟုတ္ခဲ႔တယ္ဆိုရင္ ဒီအေျဖထြက္ ။ တကယ္လို႔မဟုတ္ခဲ႔ဘူးဆိုရင္ေနာက္အေျဖထြက္ ဆို ၿပီး သတ္မွတ္ေပးခ်င္တဲ႔အခါမ်ိဳးမွာသံုး ပါတယ္ ။ သူရဲ့ပံုစံကေတာ႔
Condition ? result 1 : result 2
ျဖစ္ပါတယ္ ။ ဥပမာ အေနနဲ႔ ကေတာ႔ ေအာက္ကကုဒ္ေလးေတြကိုေလ႔လာၾကည့္ပါ ။
7==5 ? 4 : 3
// ပထမ ၇ နဲ႔ ၅ နဲ႔ ညီသလားဆိုတာ စစ္လုိက္ပါတယ္ ။ မညီတာျဖစ္တဲ႔အတြက္ေၾကာင္႔ result 1 ကိုေက်ာ္ၿပီး အေျဖထုတ္ေပးရင္ result 2 ကိုထုတ္ေပးမွာျဖစ္ပါတယ္
7==5+2 ? 4 : 3
// အေပၚ က expression မွာ ေတာ႔ ၇ က ၅ နဲ႔ ၂ နဲ႔ေပါင္းျခင္းနဲ႔ ညီလားလို႔စစ္ပါတယ္ ။ ညီတာျဖစ္လို႔ result 1 ျဖစ္တဲ႔ ၄ ကိုထုတ္ေပးမွာျဖစ္ပါတယ္ ။
(၈)Comma Operator ( , )
Comma Operator ကိုေတာ႔ တစ္ခုထက္ပိုတဲ႔ expression ေတြကို ခြဲျခားသိနိုင္ဖို႔အသံုးျပဳပါတယ္ ။ ဥပမာ----
a = (b=3, b+2);
ဆိုရင္ Comma Operator သံုးထား ပါတယ္ ။ ပထမ b တန္းဖိုး ၃ ထည့္ၿပီး ေနာက္ b+3 ဆိုတဲ႔အတြက္ေၾကာင္႔ a တန္ဖိုးရဲ့ေနာက္ဆံုးအေျဖက ၅ ျဖစ္မွာပါ ။
(၉)Compound Assignment Operators
Compound Assignment Operators ေတြက Assignment Operator အမ်ိဳးစား ပါပဲ ။ ဒါေပမဲ႔ က်န္တဲ႔ေအာ္ပေရတာေတြအလုပ္လုပ္ပံုကို နားလည္မွ သူ႔ကိုနားလည္မွာျဖစ္လို႔ ေနာက္ဆံုးမွာ လာရွင္းျပတာပါ ။
+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |= တို႔ ပါဝင္ပါတယ္ ။
a+=2; // a=a+2
a-=2; // a = a -2;
a*=2 ; // a = a*2 ;
a>>=2; // a = a>>2 ;
စသည္ျဖင္႔
ကဲဗ်ာ …. ဒီေလာက္ဆိုရင္ Operators ေတြ ဘယ္ႏွမ်ိဳးရွိတယ္ ဘယ္လိုအေျခအေနေတြမွာဘယ္ Operators ေတြကိုသံုးတယ္ ။ ဘယ္ Operator ရဲ့ လုပ္ေဆာင္ပံုကေတာ႔ ဘယ္လိုဆိုတာ လံုးဝႀကိးမဟုတ္ေတာင္ သေဘာေပါက္သေလာက္ေတာ႔ရွိမွာပါ ။ အားလံုး ပဲအဆင္ေျပၾကပါေစဗ်ာ ။
ေဆြးေႏြးခ်က္ (၄)
Tuesday, June 29, 2010
Labels:
C++,
Programming
ေရးသားသူ ->
စစ္ေသြး
at
5:17 PM
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment