PDA

View Full Version : ကြ်န္ေတာ္ ႏွင့္ Microsoft Visual C++ 2010



konay
04-09-2011, 07:51 AM
C ++ (C Double Plus) ဆိုသည္မွာ ......

C ++ (C Double Plus) ဆိုသည္မွာ ေယဘူယ်သံုး Programming Language ၁ မ်ိဳးၿဖစ္ပါသည္။ Low-Level နဲ ့ High-Level ကို ခ်ိတ္ဆက္ေပးေသာ Middle-Level Language အၿဖစ္ ေတာ္ေတာ္မ်ားမ်ား သိၿပီးၿဖစ္ၾကမွာပါ။ C++ သည္ Statically Typed , Free From , Multi-paradigm , Complied Language ၿဖစ္ၿပီး Complied လုပ္ေသာအခါ သက္ဆိုင္ရာ စက္ေတြ အတြက္ Machine Code ထုတ္ေပးပါတယ္။ Procedural , Data Abstraction , Object-oriented Programing and Generic Programing မ်ား ကို အသံုးၿပဳႏိုင္ပါတယ္။


C Language ကို Dennis Ritchies ဆိုသူ ပရိုဂရမ္မာ တစ္ဦးက AT & T Bell Lab မွာ လုပ္ကိုင္ေနရင္း 1970 မွာ Interpreted Programing Language BCPL ကိုမွီးၿပီးေရးသားခဲ့တာၿဖစ္ပါတယ္။
ရည္ရြယ္ခ်က္ကေတာ ့C နဲ ့ Low-level ၿဖစ္တဲ ့Assembly လိုမ်ိဳး Programing Language လုပ္ႏီုင္ဖို ့ပါ။ ဆက္သြယ္နည္းကေတာ ့ လူတိုင္းအသံုးၿပဳႏိုင္တဲ ့ High-level Language နဲ ့ဆက္သြယ္တာမ်ိဳး ကိုသူက လုပ္ခ်င္ခဲ့ပါတယ္။
Ritchie ဟာ သူလက္ရွိ အသံုးၿပဳေနတဲ ့ Unix System မွာ C ကို စမ္းသပ္ရာ ေအာင္ၿမင္သြားခဲ့ပါတယ္။ဒါနဲ ့ဘဲ Unix Developer ၿဖစ္တဲ ့ Ken Thompson ဟာ Unix ကို C နဲ ့ ေၿပာင္းလဲ ေရးသားခဲ့ပါတယ္။ C ဟာ Unix မွာ ႏွစ္အေတာ္ၾကာ တည္ရွိေနခဲ့ ပါတယ္။

AT & T ဟာ Unix System ကို တကၠသိုလ္ေက်ာင္းေတြ မွာ အသံုးၿပဳဖို ့အတြက္ အလကားနီးနီး လွဴခဲ ့တာၿဖစ္ေလေတာ ့ C Language ဟာ တကၠသိုလ္ ေက်ာင္းသားေတြ နဲ ့ အနီးစပ္ဆံုး Language တစ္ခု ၿဖစ္လာခဲ့ပါတယ္။ဒါေၾကာင့္ ေက်ာင္းသားေတြ ဟာ High-level မွာ ၾကီးစိုးေနတဲ ့ COBOL နဲ ့ Low-level မွာၾကီးစိုးေနတဲ ့Assembly တို ့ကို C Language နဲ ့ တိုက္ထုတ္နိုင္ခဲ့ပါတယ္။

1983 မွာ ANSI က C Language Definition ကိုသတ္မွတ္ၿပီး ISO ( International Standard Organization ) ကိုတင္ၿပခဲ့ရာ 1990 မွာ C Standard Document ကိုၿဖန္ ့ခ်ီႏိုင္ခဲ့ပါတယ္။

Ref: Wikipedia
Ref: C++ Basics

konay
04-09-2011, 07:52 AM
ဟုတ္ပါၿပီ ကြ်န္ေတာ္ တို ့ Program ေလး တစ္ခုေလာက္ စေရးၾကည့္ ၾကရေအာင္ ... အရင္ဆံုး Microsoft Visual Studio 2005/8/10 C++ တစ္ခုခု ေပါ့ ဗ်ာ ...ဗားရွင္း တစ္ခု ေလာက္ ေဒါင္းၿပီး ရမ္းထားလိုက္ပါ။
ၿပီးရင္ Microsoft Visual C++ အဲ့ေကာင္ ကို ဖြင္ ့လိုက္ပါ ... Start Page ထြက္လာပါမယ္ ...ဗားရွင္းအလိုက္ အနည္းငယ္ေတာ ့ ကြာၿခားပါလိမ္ ့မယ္... ကိစၥ မရွိပါဘူး။
ကြ်န္ေတာ္ ကေတာ ့ Miscrosoft Visual C++ 2010 နဲ ့သံုးထားတာၿဖစ္ပါတယ္။
Start Page >>> New Project >>> Win 32 Console Application ကို ေရြးလိုက္ပါ။ ေအာက္မွာ " Lesson1 " လို ့သာ နိမ္းေပးလိုက္ပါ။

http://i938.photobucket.com/albums/ad222/konayonline/2011/1-12.png

Next ကို ဆက္သြားလိုက္ပါမယ္ ..။ Console Application ကို ေရြးၿပီး Empty Project ကို အမွတ္ၿခစ္ေပးလိုက္ပါ။

http://i938.photobucket.com/albums/ad222/konayonline/2011/2-12.png

ၿပီးရင္ Solution Explorer ထဲ မွာ Source File ကို R-click ေထာက္ Add New item ကေန C++ File(.cpp) ကိုေရြး ေအာက္က နိမ္းမွာ [glow=red,2,300]"Lesson1" လို ့ရိုက္ ၿပီးရင္ " OK " လိုက္ရင္ ၿပီးပါၿပီ။

http://i938.photobucket.com/albums/ad222/konayonline/2011/3-8.png

http://i938.photobucket.com/albums/ad222/konayonline/2011/4-7.png

Solution Explorer ထဲမွာ Source File ရဲ ့ ေအာက္ ကို ခုနက ထည္ ့လိုက္တဲ ့" Lesson1.cpp " ဆိုတဲ ့ ဖိုင္ဝင္လာၿပီဆိုရင္ အဲ့ဖိုင္ ကို ၁ ခ်က္က လစ္ၿပီး ညာဘက္ အကြက္မွာ စေရးလို ့ရပါၿပီ ခင္ဗ်ာ ...။

http://i938.photobucket.com/albums/ad222/konayonline/2011/5-3.png

အဲ့မွာ တစ္ခ်က္ ၾကည့္ ရမွာက ေအာက္မွာ Output နဲ ့ Error List ဆိုတဲ ့ အကြက္ေလး ၿပမၿပ ၁ ခ်က္ ၾကည့္ ၊ မၿပရင္ View >>> Other Window >>> Error List ကို ကလစ္ေပးလိုက္ အိုေက သြားပါလိမ္ ့မယ္။

konay
04-09-2011, 07:59 AM
ကြ်န္ေတာ္တို ့ C++ နဲ ့ Program တစ္ခု စေရးေတာ ့မယ္ဆိုရင္ သူ ့ရဲ ့ ေရးပံု ေရးနည္း ေလးေတြ ကို စေလ ့လာဖို ့လိုပါမယ္။
အဲ့လို မေလ ့လာ ခင္ Error ေတြ အေၾကာင္း တစ္ခ်က္ေလာက္ ေၿပာရေအာင္ ကြ်န္ေတာ္ အေပၚမွာ ေၿပာခဲ့ တဲ ့ Error Box ကိုေတာ ့ On ထားဖို ့လိုပါမယ္။

Syntax Error

ဒီေကာင္ကေတာ ့ ရွင္းပါတယ္ ..။ကြ်န္ေတာ္တို ့Program ေရးတာ မွားေနလို ့ၿပတဲ ့Error ၿဖစ္ပါတယ္။

Semantic Error

ဒီေကာင္ကေတာ ့ ကြ်န္ေတာ္ တို ့ Program ေရးတာမွန္တယ္ ..ဒါေပမဲ ့ Logic မက်ဘူးေပါ့ဗ်ာ ... ကြ်န္ေတာ္တို ့က ၁ နဲ ့ ၂ ကို ေပါင္းလို ့ရတဲ ့ အေၿဖကိုထုတ္ခိုင္းထားတယ္။ဒါေပမဲ ့ "+" ေနရာမွာ "*" ကိုမွားသံုးမိတယ္။

ဟုတ္ပီ ဒါဆိုရင္ ကြ်န္ေတာ္တို ့ Program တစ္ခု စမေရးခင္ သိထားရမဲ ့ အခ်က္ေလးေတြ ကို စေၿပာၾကည့္ ၾကရေအာင္။

-(၁) #include <iostream> ဆိုၿပီးစေရးရပါမယ္။ iostream ဆိုတာ Input Output ထုတ္မွာ မို ့လို ့iostream လို ့စလိုက္တာၿဖစ္ပါတယ္။ဒီေကာင္ က Header ၿဖစ္လို ့ <iostream.h> လို ့လည္း ေရးလို ့ရပါတယ္။

-(၂) void main() ဒီေကာင္ က function ပါ။ return ၿပန္စရာ မရွိလို ့ void main လို ့ေရးလိုက္တာပါ။ တကယ္လို ့ integer တစ္ခုခု ကို return ၿပန္ရမယ္ဆိုရင္ int main() ၿဖစ္သြားပါမယ္။

-(၃) Body ကို { နဲ ့} ၾကားမွာ ေရးရပါမယ္။

-(၄) programထဲတြင္ သုံးထားသမွ် variable အားလုံးကို ေၾကျငာေပးရမည္။

-(၅) statement တစ္ခု ဆံုးတိုင္း ဆီးမီးေကာ္လံ ; ထည္ ့ကို ထည္ ့ေပးရပါမယ္။

-(၆) \\ ရဲ ့အေနာက္မွာ ေရးသမ်ွ ဟာ Comment ၿဖစ္ပါတယ္။ ၁ နည္းအားၿဖင့္ Program က အလုပ္မလုပ္ပါဘူး။

သူ ့ရဲ ့အၾကမ္းၿဖင္းပံုစံကေတာ ့ ၿဖစ္ပါမယ္။


#include<iostream>
using namespace std;
int main()
{
int a,b,c;
cout<<"Enter first number";
cin>>a;
cout<<"Enter second number";
cin>> b;
c=a+b;
cout<<"Answer = "<<c;
return 0;
}

ကြ်န္ေတာ္ တို ့ အေပၚ ကပံုစံ ေလးမွာ ဆိုရင္ int a,b,c; ဆိုတာ variables declaration ၿဖစ္ပါတယ္ ။ abc ဆိုတာ Integer ၿဖစ္ေၾကာင္းေၾကာ္ ၿငာေပးလိုက္တာ ၿဖစ္ပါတယ္။
ကြ်န္ေတာ္ တို ့ cout<< ကို Interger ၿဖစ္တဲ ့ a နဲ ့b ကိုေပါင္းလို ့ ရတဲ ့ အေၿဖ ကို ထုတ္ခိုင္းလိုက္ပါတယ္။ Header <iosteram> ကေတာ ့ ရွင္းပါတယ္ input output ထုတ္မွာ ၿဖစ္လို ့ iostream လို ့ include လုပ္ပါတယ္။ "Enter first number" ဒိေနရာ မွာေတာ ့ ကြ်န္ေတာ္ တို ့ ေပါင္းခိုင္း ခ်င္တဲ ့integer ကိုထည္ ့လိုက္ရင္ အေၿဖထြက္ပါၿပီ။

အဲ့ဒီမွာ ကြ်န္ေတာ္ တို ့ သိထားရမည္ ့ အခ်က္ေတြ ကေတာ ့ ..........................

int (integer - ကိန္းျပည့္ေတြဆိုရင္)
float (ဒသမကိန္းဆိုရင္ float လို႔ေၾကညာပါမယ္)
double (ဒသမကိန္းေတြ သိပ္မ်ားသြားတယ္ဆိုရင္ double နဲ႔ေၾကျငာပါတယ္)
unsigned int (အပါင္းကိန္းျပည့္ေတြပဲ ျဖစ္မယ္ဆိုရင္ unsigned int နဲ႔ေၾကျငာပါတယ္)

ေအာက္က attachment ထဲ မွာ ဇယားေလး ကို ၾကည့္လိုက္ ရင္သေဘာေပါက္ သြားပါလိမ္ ့မယ္။

http://www.decashare.com/images/Da28pVRvu-att1.png

konay
04-09-2011, 08:00 AM
ကြ်န္ေတာ္တို ့ Data Type Integer int ကိုေရးၿပီး သြားၿပီဆိုရင္ char ကိုဆက္သြားလိုက္ၾကရေအာင္။ Character ဆိုတာကေတာ ့ အၾကမ္းဖ်င္းေၿပာရမယ္ ဆိုရင္ A B C D ..... ေပါ့ဗ်ာ ။
ဒီေကာင္ေတြ ကို ASCII Code (American Standard Code for Information Interchange) လို ့ေခၚပါတယ္။ ကြ်န္ေတာ္တို ့ သံုးေနတဲ ့ကြန္ၿပဴတာေတြ အားလံုးဟာ
A B C D ကို နားမလည္ ပါဘူး .. အဲ့ဒီ ASCII Code ေတြ ကို သူက ၿပန္ထုတ္ေပးလိုက္တာပါ။ ေအအၾကီး Capital Letter A ဆိုပါေတာ ့ သူရဲ ့ code ဟာ 65 ၿဖစ္ပါမယ္။ ကြန္ၿပဴ တာက 65 ဆိုတဲ ့ Code ကို A လို ့သူက နားလည္ထားလို ့ A ကို ထုတ္ေပးလိုက္တာပါ။

ဟုတ္ပီ ကြ်န္ေတာ္ တို ့ Program အပိုင္း ကို ဆက္သြားလိုက္ၾကရေအာင္ ... Data Type ၿဖစ္တဲ ့ char ရဲ ့ byte ကေတာ ့ 1 ၿဖစ္ပါတယ္။
သူ ့ရဲ ့ Singed Value ( - ကေန + အထိ ) -123 to 127 အထိ အသံုးၿပဳႏိုင္ပါတယ္ ။
Unsigned Value ( 0 နဲ ့ အေပါင္းကိန္း ) 0 to 255 အထိ အသံုးၿပဳႏိုင္ပါတယ္။

ေအာက္က Code ေလးကို Run ၾကည္္ ့လိုက္ရေအာင္ ....


#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
char c = 'A';
cout <<"ASCII code 65 is represent character: " << char(65) << endl;
cout << "Bytes used by char is: " << sizeof(c);
getch( );
}

အဲ့ မွာ တစ္ခု ေၿပာစရာ ရွိတာက using namespace std; ကို ကြ်န္ေတာ္ တို ့ ဘာလို ့သံုးရသလဲ ဆိုေတာ ့ သူက Library ထဲက Namespace std ကိုေခၚသံုးဖို ့ တစ္ခါတည္းေၾကာ္ၿငာ ေပးလိုက္တာပါ။ အဲ့လို မေရးလိုက္ ရင္ ....

std::cout <<"ASCII code 65 is represent character: " << char(65) << endl;
std::cout << "Bytes used by char is: " << sizeof(c); ဒီလိုေတြ ေရးေနရပါလိမ္ ့မယ္ ။ အဆင္လံုးဝ မေၿပပါဘူးဒါေၾကာင့္ အေပၚ မွာ ၁ ခါတည္း ေၾကာ္ၿငာလိုက္တာနားေအးပါတယ္။

getch( ); ဆိုတာကေတာ ့ ကြ်န္ေတာ္ တို ့ Command Prompt ထြက္လာတဲ ့အခါ User က ကီးဘုတ္ေပၚ က ကီး တစ္ခုခု နွိပ္မွ သူက ေပ်ာက္သြားမွာပါ။ အဲ့အတြက္ detect လုပ္ထားတာပါ။

ဒီလို ထြက္လာပါမယ္ .....

http://www.decashare.com/images/hSqBMdz1U-1.png

konay
04-09-2011, 08:02 AM
ဒီတစ္ခါေတာ ့ ကြ်န္ေတာ္တို ့ short integer ( short int ) ကို အေၿဖထုတ္ၾကည့္ ၾကရေအာင္ ......
သူရဲ ့Value ေတြကေတာ ့ Singed မွာ ဆိုရင္ -32768 to 32768 အထိရွိပါမယ္ ။ Unsigned မွာဆိုရင္ေတာ ့ 0 to 65535 အထိရွိပါမယ္။

သူ ့ရဲ ့Memory ပမာဏ Byte ကို တြက္ထုတ္ ၾကည့္ ရေအာင္ .. သူ ရဲ ့ Byte က ဘယ္ေလာက္ ယူသလဲ ဆိုတာ ...
တြက္ထုတ္ မဲ ့function ကေတာ ့ sizeof() ဆိုတဲ ့ function နဲ ့ တြက္ထုတ္မွာ ၿဖစ္ပါတယ္။ ေအာက္က ကုဒ္ ေလးကို run ၾကည့္ ၾကရေအာင္။


#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
signed short int s=-32768;
cout << s << '\n' ;
cout << " Byte use by short int is: " << sizeof(s);
getch();
}


အဲ့ဒီ ကုဒ္မွာ ဆိုရင္ ကြ်န္ေတာ္ တို ့ n ကို signed short int လို ့ေၾကာ္ၿငာလိုက္ၿပီး -32768 နဲ ့ေပးညီလိုက္ပါတယ္။ output ကို sizeof() နဲ ့ သူ ့ရဲ ့byte ကို တြက္ထုတ္ခိုင္းလိုက္ပါတယ္။ေအာက္က လို result ထြက္လာပါမယ္။


Result :

-32768
Byte use by short int is: 2

konay
04-10-2011, 01:38 PM
အေပၚက Lesson ေတြကို သေဘာေပါက္တယ္ ဆိုရင္ ဒါေလးေတြ ကို Run ၾကည့္ ၾကပါဦး။
သေဘာ တရားေတြ ကေတာ ့ အတူတူ ပါဘဲ sizeof() Function နဲ ့ သူတို ့ရဲ ့Byte ေတြ ကို တြက္ထုတ္ခိုင္းတာပါဘဲ။



#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
unsigned int n = 0;
cout << " Unsigned integer value is: " <<n<< '\n';
cout << " Bytes used by int is: " << sizeof(n);
getch();
}


Result:

Unsigned integer value is: 0
Bytes used by int is: 4





#include <iostream>
#include <conio.h>
using namespace std;
void main( )
{
unsigned long int u = 31356;
signed long int s = -31455;
cout << "Unsigned long integer is:" << u <<'\n';
cout << "Bytes used by unsigned long int is:"<< sizeof(u) <<'\n';
cout << "signed long integer is:" << s <<'\n';
cout << "Bytes used by signed long int is:" <<sizeof(s);
getch( );
}


Result:

Unsigned long integer is:31356
Bytes used by unsigned long int is:4
signed long integer is:-31455
Bytes used by signed long int is:4

konay
04-10-2011, 01:41 PM
Boolean datatype bool

ကြ်န္ေတာ္တို ့ Boolean အေၾကာင္းသြားလိုက္ၾကရေအာင္ ... သူက ေတာ ့ အမွား/အမွန္ ( True/False) ကိုဘဲ ၿပမွာ ၿဖစ္ပါတယ္။ True/False ဆိုၿပီး ၿပမွာေတာ ့ မဟုတ္ပါဘူး " 1 " ဆိုရင္ True ၿဖစ္ၿပီး False ဆိုရင္ေတာ ့ " 0 " ၿပမွာၿဖစ္ပါတယ္။



#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
int x = 10;
int y = 1;
bool b = y>x;
cout << " The Boolean Value is: " << b << '\n';
getch();
}


ကဲ ဒီကုဒ္ က ရွင္းစရာေတာင္ မလိုဘူးထင္ပါတယ္။ integer x ကို 10 , integer y ကို 1 လို ့ေပးညီလိုက္ပါတယ္။
bool ကို b လို ့ေၾကာ္ေၿငာ လိုက္ၿပီးေတာ ့ y သည္ x ထက္ ငယ္ပါတယ္ ဆိုေတာ ့ မွန္တာေပါ့ဗ်ာ ။ အဲ့ေတာ ့ cout ကို bool ၿဖစ္တဲ ့b ရဲ ့ value ကို ထုတ္ခိုင္းလိုက္တယ္။
မွန္တဲ ့ အတြက္ 1 လို ့ထြက္လာပါမယ္။ တကယ္လို ့ y>x ဆိုရင္ေတာ ့ မွားလို ့ 0 လို ့ထြက္လာပါလိမ့္မယ္။

konay
04-10-2011, 01:42 PM
float ( ဒသမ ကိန္း)

ဒသမ ကိန္း ၿဖစ္တဲ ့ point ေတြ ကိုတြက္ခိုင္းမယ္ ဆိုရင္ float ကို သံုးပါမယ္။ အဲ့ေတာ ့ ကြ်န္ေတာ္ တို ့ စက္ဝိုင္း ရဲ ့ဧရိယာ ၿဖစ္တဲ ့ pir2 pi ဆိုတာ ပိုင္ sign ကိုေၿပာတာပါ .. Post ထဲမွာလည္း pi ရဲ ့sign ကို ထည့္လို ့မရဘူးၿဖစ္ေနတယ္ ။ ၁ မ်ိဳးဘဲ ။ အင္းထားလိုက္ပါေတာ ့ စ ေရးၾကည့္ရေအာင္။



#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
float rad = 2.5;
float pi = 3.14159;
float area = pi * rad * rad ;
cout << " Radius of circle: " << rad <<'\n';
cout << " Area of circle: " << area <<'\n';
getch();
}


float rad = 2.5; float နဲ ့ radius ကိုေၾကာ္ၿငာပါတယ္။
float pi = 3.14159; float နဲ ့ ပိုင္ တန္ဖိုး ကိုေၾကာ္ၿငာပါတယ္။
float area = pi * rad * rad ; float နဲ ့ Area ရဲ ့ Formula ကို ေရးပါတယ္။
cout မွာ radius ဘယ္ေလာက္ ဆိုရင္ စက္ဝိုင္း ရဲ ့ ဧရိယာ ဘယ္ေလာက္ ဆိုၿပီး ထုတ္ခိုင္းပါတယ္။

http://www.decashare.com/images/b6fVcYCBy-rad-float.png (http://www.decashare.com/images/b6fVcYCBy-rad-float.png)

konay
04-10-2011, 08:05 PM
double Data Type

ဒီတစ္ခါေတာ ့ ကြ်န္ေတာ ့တို ့ double ဆိုတဲ ့ data type ေလးကို ဆက္သြားလိုက္ပါမယ္။ သူကေတာ ့ precision floating point လို ့ေခၚပါမယ္ .. ဒသမကိန္းေတြ ကို precision အတိအက် တြက္ထုတ္မဲ ့ data type လို ့ေခၚလိုက္ပါမယ္။ သူရဲ ့Memory သံုးစြဲႏိုင္မွဳ ကေတာ ့ 8 byte အထိ သံုးစြဲႏိုင္ပါတယ္။
သူရဲ ့ Range ကေတာ ့ +/- 1.7e to +/- 308 အထိ သြားပါမယ္။ ဒါဟာဘာကို ဆိုလို လည္း ဆိုေတာ ့ သူ ့ကို Signed ေရာ ၊ Unsigned ေရာ ၂ မ်ိဳးလံုးသံုးလို ့ရမယ္ လို ့ဆိုပါတယ္။
ရုတ္တရက္ ၾကည့္ လိုက္ရင္ 1.7 ကေတာ ့ ဟုတ္ပါၿပီ ... " e " က ဘာၾကီးတုန္းလို ့ေမးစရာရွိလာပါတယ္။ သူကို ဒီလို ရွင္းပါမယ္။ ေအာက္က ပံုစံ အတုင္း Calculator မွာ ေၿမွာက္ၾကည့္လိုက္ပါ။


+1.7^+308 to +1.7^-308
-1.7^+308 to -1.7^-308

ကဲ ... ဒါဆိုရင္ သူ ့ရဲ ့memory သံုးစြဲမွုဳ ကို Program နဲ ့ တြက္ၾကည့္ လိုက္ရေအာင္။



#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
double a = 3000000.0;
cout << " Double precision floating point is: " << a << '\n';
cout << " Byte occupied is " << sizeof(a) ;
getch();
}


နားလည္ ေလာက္မယ္လို ့ထင္ပါတယ္။ a ကို double လို ့ေၾကာ္ၿငာၿပီး 3000000.0 နဲ ့ေပးညီ လိုက္ပါတယ္။
output ကို a ရဲ ့တန္ဖိုး ကို ထုတ္ခိုင္းပါတယ္။
Byte occupied ကို sizeof(a) ကို ထုတ္ခိုင္းပါတယ္။
3e+006 လို ့ထြက္လာပါမယ္။ မေၾကနပ္ ဘူးဆိုရင္ Calculator မွာ 3*10^+6 န ဲ့တြက္ၾကည့္ပါ။

konay
04-10-2011, 08:06 PM
Long Double ( long double )

double န ဲ့ long double အမွန္ေတာ ့သိပ္မကြာလွ ပါဘူး ... သူရဲ ့ byte ကလည္း 8 byte အတူတူ ပါဘဲ ။
Range ကလည္း +/- 1.7e to +/- 308 အထိသြားတာခ်င္းကလည္း တူေနၿပန္ပါတယ္။ ဒါနဲ ့ ဘာလို ့မ်ား ၂ မ်ိဳးကြဲေနရသလဲ ေပါ့ .. အရင္ C++ Document ေတြ မွာ လိုက္ရွာ ၾကည့္ေတာ ့ double က 15 digits ဒသမ အေနာက္ 15 ေနရာအထိ ၿပတယ္ ။ long double ဒင္းကလည္း အတူတူ ဘဲ 15 ဘဲ ။ ဘာေၾကာင့္ မ်ား ၂ မ်ိဳးလာကြဲေနရမွန္းကို မသိဘူး ။ ဒါနဲ ့ Microsoft ရဲ ့ C++ data type range ထဲ ဝင္ၾကည့္ ၿပန္ေတာ ့လည္း ဒင္းက long double ကို same as double လို ့ခ်ည္းၿပေနၿပန္ေရာ။ မယံုရင္ ဒီေနရာေလးမွာ (http://msdn.microsoft.com/en-us/library/s3f49ktz%28v=vs.80%29.aspx) သြားၾကည့္ လို ့ရပါ၏။ ကဲဗ်ာ သူက long ထားမွေတာ ့ ကိုယ္လည္း လိုက္ ေလာင္းတာေပါ့ ။ သိတဲ ့သူမ်ား ၿပန္ေၿဖေပးၾကပါဦးဗ်ာ ။

http://www.decashare.com/images/AQ0fVYG2p-ldouble.png (http://www.decashare.com/images/AQ0fVYG2p-ldouble.png)

ကဲ ... ဒီကုဒ္ေလးကို ရမ္းၾကည့္ ၾကပါဦး အတူတူ ထြက္လာတယ္ ဆိုတာ ေတြ ့ၾကပါဦးမယ္။ အဲ့ေတာ ့ တူရင္ တူတယ္ လို ့သာမွတ္ထားလိုက္ၾကပါေတာ ့။ ကြ်န္ေတာ္လည္း မရွင္းတက္ေတာ ့ဘူး .. :19: :19: :19: :19:




#include <iostream>
#include <conio.h>
using namespace std;
int main(void)
{
long double PI;
double PI2;

PI = 3.14159265358979323846264338327950288419716939937510;
PI2 = 3.14159265358979323846264338327950288419716939937510;

cout.precision(50);

cout << "PI = " << PI << endl;
cout << "PI = " << PI2 << endl;
cout << "PI = 3.14159265358979323846264338327950288419716939937510" << endl;
cout << "sizeof(double) = " << sizeof(double) << endl;
cout << "sizeof(long double) = " << sizeof(long double) << endl;
getch();
}

konay
04-10-2011, 08:07 PM
wchar_t Data Type

wchar_t ကေတာ ့ ကြ်န္ေတာ္ အေရွ ့မွာ ေၿပာခဲ့တဲ ့ char ( character ) ၿဖစ္တဲ ့ ASCII Code ကိုထပ္ၿပီး modify လုပ္ထားတာၿဖစ္ပါတယ္။ ဘာအတြက္လဲ ဆိုေတာ ့ Unicode Language ေတြ အတြက္ Wide Character ဆိုၿပီး International Language Character ေတြ အတြက္ ဒီေကာင့္ ကိုသံုးပါမယ္။ သူ ့ရဲ ့ Memory သံုးစြဲမွဳ ကေတာ ့ ေအာက္က ပုစၦာ မွာတြက္ထုတ္ပါမယ္ bit အေနနဲ ့ကေတာ ့ 16 bit အထိရွိပါမယ္။



#include <iostream>
#include <conio.h>
using namespace std;
void main ()
{
wchar_t w = ' Z ' ;
cout << " Wide character value " << w << endl;
cout << " Size of wide character " << sizeof(w) ;
getch();
}



Result :

Wide character value 90
Size of wide character 2


အဲ့လို ထြက္လာပါမယ္ ... မယံုရင္ ဒီေနရာေလးမွာ (http://www.asciitable.com/) " Z " ရဲ ့ ASCII Value ကိုသြားၾကည့္လိုက္ၾကည္ ့ပါ။
အဲ့မွာ ေၿပာစရာ ရွိတာက '\n'; ဆိုတာ ေအာက္ တစ္ေၾကာင္းဆင္းမယ္လို ့ေၿပာတာၿဖစ္ပါတယ္။ အခု ဒီမွာ သံုးထားတဲ ့endl; ကလည္း End Line တစ္ေၾကာင္းၿပီးၿပီ လို ့ေၿပာတာ ၿဖစ္ပါတယ္ ... ကုလားၾကီး နဲ ့ အရာၾကီး လိုပါ ဘဲ .. အတူတူ ပါဘဲ ၾကိဳက္သလို ဆင္းလို ့ရပါတယ္ ။