විචල්‍යයන්

මෘදුකාංගයක් යනු යම් යෙදීමකි, යෙදීම එය යොදන පරිසරය අනූව වෙනස් වේ. මේ සදහා විචල්‍යයන් අවශ්‍ය වේ. මේවා එක එක ගණ(data types) වලට අයත් වේ. පූර්ණ සංඛ්‍යා int ගණයටද දශමස්ථාන ඇති සංඛ්‍යා double හෝ float ගණ වලටද ඇතුළත් වේ. විචල්‍ය සදහා අවශ්‍ය දත්ත මෘදුකාංගය ධාවනය වන විට අදාළ විචල්‍ය වලය ආදේශ වේ.
int i=0;
float h=35.0 f;
input ලබා ගැනීමේ ප්‍රධාන ක්‍රමයක් වන්නේ console වලින් text දත්ත ලබාගැනීමයි. GUI, ගොනු වලින් දත්ත ලබා ගැනීම, network එකකින් දත්ත ලබා ගැනීම වෙනත් ආකාර වේ. මෙහි සාකච්ඡා වන්නෙ ප්‍රධාන ක්‍රමය හා local disk එකහි ඇති ගොනු වලින් දත්ත ලබාගැනීම පමණකි.  
int i=0;
scanf("%d", i);
printf("%d", i);
මුද්‍රණයට printf සේ input ලබාගැනීමට scanf භාවිත වේ.

විචල්‍යයන් ගැන තව දුරටත්

විචල්‍යයන් declare කිරීම හා initialize කරගැනීම ඉතා වැදගත්. C වැනි low-level(පරිගණකයේ දෘඩාංග පද්ධතියට වඩා නැඹුරු) භාෂාවක් භාවිතයේ දී වැරදිසහගත කේතයන් compiler එකෙන් සාර්ථකව compile වීමට ඇති ඉඩකඩ වැඩිය, මෙයට හේතුව නම් compile time(compile කරන මොහොතේ දී) හා run time(මෘදුකාංගය ධාවනය වන මොහොතේ දි) වෙනත් high level compilers හා ඒවා මඟින් නිපදවෙන executables වල ඇති විවිධාකාර වූ වැඩිදුර සොයාබැලීම් C වැනි භාෂාවල දක්නට නොලැබීමයි. මේවා දක්නට නොලැබෙන්නේ C වැනි භාෂා, මෘදුකාංග වල ධාවන කාලය හැකිතාක් අඩු කරගැනීමට උත්සාහ දරණ නිසයි. එම නිසා මෙවැනි භාෂා භාවිත කරන විට එසේ සිදුවිය හැකි වැරදි අවම කරගත යුතුයි, පහත දැක්වෙන්නේ එවන් වැරදීමක් සිදුවූ අවස්ථාවක්.
#include 
int main(){ int i; i=i+1; printf("Value of i"); return 0; } ඉහත උදාහරණය ධාවනය කර බැලූවිට ඔබ වාසනාවන්ත නම් 1 ලැබේවි, බොහෝ විට සිදුවන්නේ 1 නොලැබී වෙනත් යම්ක් දිස්වීමයි නැතිනම් කිසිවක් දිස් නොවීමයි. මෙයට හේතුව int i මගින් integer type variable එකකට ඉඩ වෙන්වනවා ඇරෙන්න වෙනත් කිසිවක් සිදුනොවීමයි. එනම් i=0 සිදු නොවේ. මෙය නිවැරදි කිරීමට i=0; එකතු කිරීමට සිදුවේ. එසේම තවත් ඔබ සැලකිලිමත් විය යුතු කාරණයක් වන්නේ විවිධ data types වලින් වෙන්වන ඉඩ ප්‍රමාණය පරිගණක පද්ධතියේ භාවිතාවන instruction set එකට අනූව වෙනස් වීමයි long යන data type එක සමහර compilers වලින් 64bit architectures වල  8 byte ප්‍රමාණයක් වෙන් කළද 32 bit ඒවා හි 4 byte එනම් int සදහා ඇති ඉඩ ප්‍රමාණයම ලබා දෙයි. මේ ගැන වැඩි දුර විස්තර මෙම wikiපිටුවෙන් බලාගන්න. මෙම ප්‍රශ්නය විසදීමට, පහත පරිදි size check එකක් ලබාදිය හැකියි. මෙවැන්නක් ගැන සැලකිලිමත් විය යුත්තේ ඔබ මෙම data type එකෙන් සාදාගන්නා විචල්‍යයට එයට ගත හැකි අවම පරාසයට වඩා වැඩි පරාසයක දත්ත භාවිතා කරනවා නම් ය. මෙවායේ නොගැළපීමක් ඇත්නම්  compile time එකේ දී ඔබට දන්වයි.
#include 
int main(){ long x; if (sizeof(long) == 8)  x = 9223000000000000000; else x = 100000; return 0; } වැඩිදුර: C වල එක් එක් දිග ඇති integer types වලට වෙනම header(headers යනු data types වල අර්ථ දැක්වීම් අඩංගු ගොනු වර්ගයකි) එකක් ලබා දී ඇත, එය stdint.h වේ. මෙය භාවිතයෙන් නමෙහි එම data type එකේ දිග සදහන් integer types කිහිපයක් ලබා ගත හැක. පහත උදාහරණය බලන්න,
#include 
#include
int main(){ int32_t same_as_int=-1; uint32_t same_as_unsigned_int=1; // unsigned, signed වෙනස printf("%d %d", same_as_int, same_as_unsigned_int ); // printf පිළිබඳ වැඩි දුර return 0; }

C වල සංඛ්‍යා ලබාදිය හැකි ක්‍රම

int ලබාදිය හැකි ක්‍රම,
int i=15;
int j=0x0000000F; // 16 පාදය
float ලබාදිය හැකි ක්‍රම,
float f=15.0f;
long ලබාදිය හැකි ක්‍රම,
long i=15l;
long k=15;
long h=0x0000000F;
long j=0x0000000Fl;
double ලබාදිය හැකි ක්‍රම,
double i=15.0d;
double j=15.0;
අවසානයේ ඉහත සියලු විචල්‍ය වල ඇත්තේ 15යි.

unsigend types හා signed types හඳුනාගමු

මේවා මගින් විචල්‍යය වල පරාසය තීරණය කරනු ලබයි,  මෙහි දී වන්නේ  පරිගණක මතකයේ ගබඩා වන  දත්ත පරාසය වෙනස් වීම නොව(උදා: int සදහා bit range එක 0x00000000 – 0xFFFFFFFF වේ) ගබඩා වූ දත්ත වලට ඇති තේරුම වෙනස් වීමයි. එමඟින්  භාවිතා වන සංඛ්‍යා පරාසය වෙනස් කරගත හැකිය, int වල පරාසය −231 සිට 231 − 1 දක්වා වේ. unsigned int වල පරාසය 0 සිට 232 − 1 දක්වා වේ. මේ ආකාරයට ඕනෑම data type එකකට singed හා unsinged යනුවෙන් ආකාර දෙකක් ඇත. මේවා විචල්‍ය declare කරන විට ලබා නොදුන හොත් එම විචල්‍ය signed ආකාර ඒවා බව compiler එක උපකල්පනය කරයි. Arrays ගැන ඊළඟ කොටසින් බලාපොරොත්තු වන්න.. {flike}

You may also like

HelloWorld.c
C පරිගණක ක්‍රමලේඛන භාෂාව-පිවිසුම
Arrays