آبجی
1st January 2010, 10:16 AM
در این فصل به مقدمات اولیه برنامه نویسی به زبان C می پردازیم و اصول اولیه آن را بررسی می نماییم
شناسه ها در C
شناسه (identifier) نامی است که به یک قسمت از برنامه مانند متغیر، تابع، ثابت و یا … داده می شود. در زبان C برای انتخاب شناسه ها فقط می توان از علائم زیر استفاده کرد: - حروف انگلیسی کوچک و بزرگ (A…Z a…z)
- ارقام (۰…۹)
- علامت خط پایین یا _
البته یک شناسه تمی تواند با یک رقم شروع شود. مثلا شناسه های sum ، average ، name2 و یا student_average مجاز هستند، اما شناسه های ۲name و یا student average مجاز نیستند. البته در برنامه نویسی امروزی پیشنهاد می شود بجای شناسه هایی همانند student_average از studentAverage استفاده گردد. یعنی بجای اینکه در شناسه ها از _ برای جداکننده استفاده کنیم، اولین حرف هر قسمت را بصورت بزرگ بنویسیم.
نکته مهم دیگری که باید به آن اشاره کرد آنستکه زبان C برخلاف بسیاری از زبانهای دیگر به کوچک و بزرگی حروف حساس است (case sensitive). در نتیجه شناسه های زیر با یکدیگر متفاوتند :
Sum ≠ sum ≠ SUM
این مسئله معمولا درهنگام برنامه نویسی باعث ایجاد بعضی خطاها می شود.
آخرین نکته اینستکه در هنگام انتخاب شناسه نمی توانید از کلمات کلیدی که برای منظورهای خاص در زبان C رزرو شده اند استفاده کنید. زبان C دارای ۳۲ کلمه کلیدی است که عبارتند از :
auto
break
case
char
Const
continue
default
do
double
Else
enum
extern
float
for
Goto
if
int
long
register
Return
short
signed
sizeof
static
Struct
switch
typedef
union
unsigned
Void
volatile
while
البته در نسخه های جدید C کلمات کلیدی دیگری نیز به لیست فوق اضافه شده است. دقت کنید که کلیه این کلمات با حروف کوچک نوشته شده اند.
انواع داده ها در C
همانطور که قبلا نیز گفتیم هر متغیر پیش از آنکه استفاده گردد ابتدا باید اعلان گردد. اعلان یک متغیر تعیین نوع آن را نیز دربر می گیرد. سوال اصلی آنستکه چه نوع داده هایی در زبان C و جود دارد. انواع داده های متداول عبارتند از :
نوع داده
توضیح
اندازه (بیت)
محدوده
char
کاراکتر
۸
-۱۲۸ to +127
int
عدد صحیح
۱۶
-۳۲۷۶۸ to + 32767
float
عدد اعشاری
۳۲
۳٫۴e-38 to 3.4e+38
double
عدد اعشاری با دقت مضاعف
۶۴
۱٫۷e-308 to 1.7e+308
البته چند نکته مهم درمورد جدول فوق قابل ذکر است :
- اندازه int در محیطهای ۱۶ بیتی مانند DOS برابر ۱۶ بیت است. اما در محیطهای ۳۲ بیتی همانند Windows اندازه آن ۳۲ بیت می باشد که در اینصورت محدوده ای برابر -۲,۱۴۷,۴۸۳,۶۴۷ تا +۲,۱۴۷,۴۸۳,۶۴۷ را پوشش می دهد.
- در بعضی از کامپایلرهای C، نوع داده bool نیز وجود دارد که می تواند یکی از مقادیر true(درست) یا false (غلط) را نشان دهد . اما در نسخه های اولیه C از همان نوع داده صحیح یا int برای اینکار استفاده می شد. بدین صورت که ۰ نشاندهنده false و هر عدد غیر صفر (معمولا ۱) نشاندهنده true است.
- از آنجا که برای ذخیره سازی کاراکترها کد اسکی آنها ذخیره می گردد، از یک متغیر کاراکتری یا char می توان بعنوان یک عدد صحیح کوچک نیز استفاده کرد و اعمال ریاضی برروی آنها نیز مجاز است.
علاوه براین چندین اصلاح کننده نیز وجود دارد که به ما اجازه می دهد نوع داده مورد نظر را با دقت بیشتری برای نیازهای مختلف استفاده نماییم.
این اصلاح کننده ها عبارتند از : short, long, signed, unsigned
تمام اصلاح کننده های فوق می توانند به نوع داده int اعمال شوند و اثر آنها بستگی به محیط دارد. مثلا در یک محیط ۱۶ بیتی، short int بازهم برابر ۱۶ بیت است ولی long int برابر ۳۲ بیت خواهد بود. علاوه براین unsigned int باعث می شود که یک عدد ۱۶ بیتی بدون علامت داشته باشیم که بازه بین ۰ تا ۶۵۵۳۵ را پوشش می دهد. signed int نیز همانند int معمولی بوده و تفاوتی ندارد. البته ترکیب این اصلاح کننده ها نیز ممکن است. مثلا unsigned long int یک عدد ۳۲ بیتی بدون علامت است که بازه ۰ تا ۴,۲۹۴,۹۶۷,۲۹۵ را پوشش می دهد.
اما برروی نوع داده char فقط اصلاح کننده های signed و unsigned را می توان اعمال کرد. معمولا از اصلاح کننده unsigned وقتی استفاده می شود که قصد داشته باشیم از char بعنوان یک عدد صحیح مثبت بین ۰ تا ۲۵۵ استفاده کنیم.
برروی نوع داده double تنها اصلاح کننده long قابل اعمال است و دراینصورت عدد اعشاری با ۸۰ بیت را خواهیم داشت که قادر است هر عددی در بازه ۳٫۴e-4932 تا ۱٫۱e+4932 را در خود نگاه دارد.
تعریف متغیرها
برای تعریف متغیرها به شکل زیر عمل می کنیم:
<type> <variable-list>;
که type یکی از نوع داده های گفته شده و variable-list لیستی از متغیرها است که با کاما از یکدیگر جدا شده اند. بعنوان مثال :
int sum;
float average;
long int a, b, c ;
unsigned long int i, j, k ;
علاوه براین می توان در هنگام تعریف متغیر به آن مقدار اولیه نیز داد. مثال :
int d = 0 ;
نکته مهم آنکه زبان C به متغیرها مقدار اولیه نمی دهد (حتی ۰) و برنامه نویس خود باید اینکار را صریحا انجام دهد، درغیر اینصورت مقدار اولیه متغیر، نامعین خواهد بود.
تعریف متغیرها طبق اصول زبان C میتواند درهرجایی از برنامه صورت پذیرد، و متغیرهای تعریف شده از همان خط به بعد قابل استفاده خواهد بود. اما معمولا توصیه می گردد که تعریف متغیرها در همان خط ابتدایی تابع و بلافاصله پس از { صورت پذیرد.
ثوابت
ثابتها مقادیر ثابتی هستند که مقدار آنها در حین اجرای برنامه تغییر نمی یابد. ثابتها می توانند از هریک از نوع داده های اصلی باشند. برای نمایش هر ثابت بسته به نوع آن عمل می کنیم که شرح هریک در زیر آمده است :
۴ ثوابت عددی صحیح : برای نمایش این دسته از ثوابت، از دنباله ای از ارقام بعلاوه علامت + یا - استفاده می کنیم. بعنوان مثال ۴۵- و یا ۳۴۸۹ ثوابت صحیح هستند. در حالت عادی C هر عدد را در کوچکترین نوع داده ای که می تواند قرار می دهد. مثلا عدد ۸۵ در یک int قرار می گیرد، اما عدد ۱۴۵۳۹۸ در یک long int قرار خواهد گرفت. اما اگر قصد دارید یک عدد کوچک بعنوان long محسوب گردد، می توانید از پسوند L در انتهای آن استفاده می کنیم. مثلا ۲۴۵L یک عدد long محسوب می شود.
long int a = 20L;
ضمن اینکه پسوند U در انتهای عدد نیز نشانه بدون علامت بودن آن است.
نکته دیگر آنکه C به شما اجازه می دهد درصورت لزوم ثوابت صحیح خود را در مبنای ۸ یا ۱۶ نیز که از مبناهای متداول در برنامه نویسی هستند، بنویسید. برای نوشتن عدد در مبنای ۸ باید آن را با ۰ آغاز کنید، مثلا ۰۳۴۲ یک عدد در منای ۸ محسوب می گردد. اما برای نوشتن یک عدد در مبنای ۱۶ باید آن را با ۰x آغاز نمایید، مانند ۰×۲۷A4.
8 ثوابت عددی اعشاری : برای نمایش اعداد اعشاری، باید از نقطه اعشار استفاده کنیم، مانند ۲۳۷٫۴۵ ، اما نکته جالب آنستکه می توانید از نماد علمی نیز برای نمایش اعداد اعشاری استفاده کنید. برای اینکار کافی است از حرف e برای نمایش قسمت توان استفاده نمایید. بعنوان مثال :
-۲۳٫۴۷ × ۱۰ ۵ = -۲۳٫۴۷e5
42.389 × ۱۰ -۳ = ۴۲٫۳۸۹e-3
دقت کنید که قسمت توان، حتما یک عدد صحیح است. نکته جالب اینجاست که برخلاف مورد قبل، کامپایلر بطور پیش فرض داده های اعشاری را از نوع double فرض می کند.چنانچه دوست دارید ثابت شما ازنوع float درنظر گرفته شود، در انتهای آن F قرار دهید. ضمنا پسوند L نیز داده اعشاری را از نوع long double درنظر می گیرد. ۱۰ ثوابت کاراکتری : برای نشان دادن ثوابت کاراکتری، آنها را در داخل ‘ قرار می دهیم. بعنوان مثال ‘A’ یک ثابت کاراکتری است.
char ch = ‘S’ ;
دقت کنید که همانطور که قبلا گفته شد، کد اسکی کاراکترها در متغیر ذخیره می گردد، بنابراین می توان از آن بعنوان یک عدد صحیح نیز استفاده کرد. نکته مهم دیگر آنستکه به تفاوت عدد ۵ و کاراکتر ‘۵′ دقت داشته باشید. در حقیقت ‘۵′ برابر است با عدد ۵۳ که همان کد اسکی آن است.
از آنجا که بعضی کاراکترها، مانند enter قابل نمایش نیستند، بهمین دلیل آنها را با استفاده از \ نمایش می دهیم. علاوه براین بعضی کاراکترها مانند خود ” نیز چون دارای معنای خاص هستند، باید با استفاده از \ نمایش داده شوند. موارد مهم عبارتند از :
\n خط جدید
\t tab کاراکتر
\a بوق کامپیوتر \” ”
\’ ‘ \\ \
۱۴ ثوابت رشته ای : C علاوه بر ثوابت فوق، از یک ثابت دیگر بنام رشته نیز حمایت می کند. رشته، دنباله ای از کاراکترها است که در داخل ” قرار می گیرند. بعنوان مثال “this is a test” یک رشته است. دقت کنید که ‘a’ یک کاراکتر است، اما “a” یک رشته است که فقط شامل یک کاراکتر می باشد.
عملگرها
عملگر، نمادی است که به کامپایلر می گوید تا عملیات محاسباتی یا منطقی خاصی را برروی یک یا چند عملوند، انجام دهد. به عملگرهایی که فقط یک عملوند دارند، عملگر یکانی می گوییم و همواره عملگر در سمت چپ عملوند قرار می گیرد(مانند عدد -۱۲۵). اما عملگرهایی که برروی دو عملوند اثر می کنند را عملگر دودویی نامیده و عملگر را بین دو عملوند قرار می دهیم (مانند ۲۳+۸۶). هر ترکیب درستی از عملگرها و عملوندها را یک عبارت می نامیم.
C از نقطه نظر عملگرها یک زبان بسیار قوی است. این عملگرها به چند دسته اصلی تقسیم می گردند که آنها را به ترتیب بررسی می کنیم..
عملگرهای محاسباتی
این عملگرها، همان اعمال متداول ریاضی هستند که در زبان C مورد استفاده قرار می گیرند. این اعمال عبارتند از :
عمل
نوع
عملگر
منفی کردن عملوند سمت راست
یکانی
-
جمع دو عملوند
دودویی
+
تفریق دو عملوند
دودویی
-
ضرب دو عملوند
دودویی
*
تقسیم دو عملوند
دودویی
/
محاسبه باقیمانده تقسیم دو عملوند
دودویی
%
عملگرهای فوق برروی همه انواع داده های C عمل می کنند بجز عملگر % که فقط برروی نوع داده های صحیح عمل میکند و برروی داده های اعشاری تعریف نشده است. اما نکته مهمی که باید به آن اشاره کرد، نحوه کار عملگر تقسیم برروی نوع داده های مختلف است. درصورتیکه هردو عملوند صحیحی باشند، تقسیم بصورت صحیح بر صحیح انجام خواهد شد. اما اگر یکی یا هر دو عملوند اعشاری باشند، تقسیم بصورت اعشاری انجام خواهد پذیرفت. فرض کنید تعاریف زیر را داریم :
int a,b ;
float c,d ;
a = 10 ; b = 4 ;
c = 8.2; d = 4.0;
اکنون به نتایج عملیات زیر دقت کنید :
a / b = < 2
c / d = < 2.05
a / d = < 2.5
a / 4 = < 2
چنانچه به آخرین مورد توجه کنید، متوجه می شوید که از آنجا که a یک متغیر صحیح است و ۴ نیز یک ثابت صحیح در نظر گرفته شده، درنتیجه تقسیم بصورت صحیح بر صحیح انجام گرفته است. چنانچه بخواهیم تقسیم بصورت اعشاری صورت پذیرد، به دو شکل می توانیم عمل کنیم. اول اینکه آن را بصورت a / 4.0 بنویسیم و دوم اینکه از عملگر قالب ریزی استفاده کنیم.
عملگر قالب ریزی می تواند یک نوع را به نوع دیگری تبدیل نماید. شکل کلی آن به شکل زیر است :
(< type >) < expression >
که type نوع مورد نظر است که قصد تبدیل عبارت expression به آن نوع را داریم. بعنوان مثال در مورد بالا می توان به شکل زیر عمل کرد :
(float) a / 4
در این حالت ابتدا از کامپایلر خواسته ایم که ابتدا عدد a را به اعشاری تبدیل کند (البته بصورت موقت) و سپس آن را بر ۴ تقسیم نماید، که مسلما حاصل اعشاری خواهد بود.
بطورکلی هرگاه ثابتها و متغیرهایی از انواع مختلف در یک عبارت محاسباتی داشته باشیم، کامپایلر C همه آنها را به یک نوع یکسان که همان بزرگترین عملوند موجود است تبدیل خواهد کرد. بعنوان مثال به مورد زیر دقت کنید :
شناسه ها در C
شناسه (identifier) نامی است که به یک قسمت از برنامه مانند متغیر، تابع، ثابت و یا … داده می شود. در زبان C برای انتخاب شناسه ها فقط می توان از علائم زیر استفاده کرد: - حروف انگلیسی کوچک و بزرگ (A…Z a…z)
- ارقام (۰…۹)
- علامت خط پایین یا _
البته یک شناسه تمی تواند با یک رقم شروع شود. مثلا شناسه های sum ، average ، name2 و یا student_average مجاز هستند، اما شناسه های ۲name و یا student average مجاز نیستند. البته در برنامه نویسی امروزی پیشنهاد می شود بجای شناسه هایی همانند student_average از studentAverage استفاده گردد. یعنی بجای اینکه در شناسه ها از _ برای جداکننده استفاده کنیم، اولین حرف هر قسمت را بصورت بزرگ بنویسیم.
نکته مهم دیگری که باید به آن اشاره کرد آنستکه زبان C برخلاف بسیاری از زبانهای دیگر به کوچک و بزرگی حروف حساس است (case sensitive). در نتیجه شناسه های زیر با یکدیگر متفاوتند :
Sum ≠ sum ≠ SUM
این مسئله معمولا درهنگام برنامه نویسی باعث ایجاد بعضی خطاها می شود.
آخرین نکته اینستکه در هنگام انتخاب شناسه نمی توانید از کلمات کلیدی که برای منظورهای خاص در زبان C رزرو شده اند استفاده کنید. زبان C دارای ۳۲ کلمه کلیدی است که عبارتند از :
auto
break
case
char
Const
continue
default
do
double
Else
enum
extern
float
for
Goto
if
int
long
register
Return
short
signed
sizeof
static
Struct
switch
typedef
union
unsigned
Void
volatile
while
البته در نسخه های جدید C کلمات کلیدی دیگری نیز به لیست فوق اضافه شده است. دقت کنید که کلیه این کلمات با حروف کوچک نوشته شده اند.
انواع داده ها در C
همانطور که قبلا نیز گفتیم هر متغیر پیش از آنکه استفاده گردد ابتدا باید اعلان گردد. اعلان یک متغیر تعیین نوع آن را نیز دربر می گیرد. سوال اصلی آنستکه چه نوع داده هایی در زبان C و جود دارد. انواع داده های متداول عبارتند از :
نوع داده
توضیح
اندازه (بیت)
محدوده
char
کاراکتر
۸
-۱۲۸ to +127
int
عدد صحیح
۱۶
-۳۲۷۶۸ to + 32767
float
عدد اعشاری
۳۲
۳٫۴e-38 to 3.4e+38
double
عدد اعشاری با دقت مضاعف
۶۴
۱٫۷e-308 to 1.7e+308
البته چند نکته مهم درمورد جدول فوق قابل ذکر است :
- اندازه int در محیطهای ۱۶ بیتی مانند DOS برابر ۱۶ بیت است. اما در محیطهای ۳۲ بیتی همانند Windows اندازه آن ۳۲ بیت می باشد که در اینصورت محدوده ای برابر -۲,۱۴۷,۴۸۳,۶۴۷ تا +۲,۱۴۷,۴۸۳,۶۴۷ را پوشش می دهد.
- در بعضی از کامپایلرهای C، نوع داده bool نیز وجود دارد که می تواند یکی از مقادیر true(درست) یا false (غلط) را نشان دهد . اما در نسخه های اولیه C از همان نوع داده صحیح یا int برای اینکار استفاده می شد. بدین صورت که ۰ نشاندهنده false و هر عدد غیر صفر (معمولا ۱) نشاندهنده true است.
- از آنجا که برای ذخیره سازی کاراکترها کد اسکی آنها ذخیره می گردد، از یک متغیر کاراکتری یا char می توان بعنوان یک عدد صحیح کوچک نیز استفاده کرد و اعمال ریاضی برروی آنها نیز مجاز است.
علاوه براین چندین اصلاح کننده نیز وجود دارد که به ما اجازه می دهد نوع داده مورد نظر را با دقت بیشتری برای نیازهای مختلف استفاده نماییم.
این اصلاح کننده ها عبارتند از : short, long, signed, unsigned
تمام اصلاح کننده های فوق می توانند به نوع داده int اعمال شوند و اثر آنها بستگی به محیط دارد. مثلا در یک محیط ۱۶ بیتی، short int بازهم برابر ۱۶ بیت است ولی long int برابر ۳۲ بیت خواهد بود. علاوه براین unsigned int باعث می شود که یک عدد ۱۶ بیتی بدون علامت داشته باشیم که بازه بین ۰ تا ۶۵۵۳۵ را پوشش می دهد. signed int نیز همانند int معمولی بوده و تفاوتی ندارد. البته ترکیب این اصلاح کننده ها نیز ممکن است. مثلا unsigned long int یک عدد ۳۲ بیتی بدون علامت است که بازه ۰ تا ۴,۲۹۴,۹۶۷,۲۹۵ را پوشش می دهد.
اما برروی نوع داده char فقط اصلاح کننده های signed و unsigned را می توان اعمال کرد. معمولا از اصلاح کننده unsigned وقتی استفاده می شود که قصد داشته باشیم از char بعنوان یک عدد صحیح مثبت بین ۰ تا ۲۵۵ استفاده کنیم.
برروی نوع داده double تنها اصلاح کننده long قابل اعمال است و دراینصورت عدد اعشاری با ۸۰ بیت را خواهیم داشت که قادر است هر عددی در بازه ۳٫۴e-4932 تا ۱٫۱e+4932 را در خود نگاه دارد.
تعریف متغیرها
برای تعریف متغیرها به شکل زیر عمل می کنیم:
<type> <variable-list>;
که type یکی از نوع داده های گفته شده و variable-list لیستی از متغیرها است که با کاما از یکدیگر جدا شده اند. بعنوان مثال :
int sum;
float average;
long int a, b, c ;
unsigned long int i, j, k ;
علاوه براین می توان در هنگام تعریف متغیر به آن مقدار اولیه نیز داد. مثال :
int d = 0 ;
نکته مهم آنکه زبان C به متغیرها مقدار اولیه نمی دهد (حتی ۰) و برنامه نویس خود باید اینکار را صریحا انجام دهد، درغیر اینصورت مقدار اولیه متغیر، نامعین خواهد بود.
تعریف متغیرها طبق اصول زبان C میتواند درهرجایی از برنامه صورت پذیرد، و متغیرهای تعریف شده از همان خط به بعد قابل استفاده خواهد بود. اما معمولا توصیه می گردد که تعریف متغیرها در همان خط ابتدایی تابع و بلافاصله پس از { صورت پذیرد.
ثوابت
ثابتها مقادیر ثابتی هستند که مقدار آنها در حین اجرای برنامه تغییر نمی یابد. ثابتها می توانند از هریک از نوع داده های اصلی باشند. برای نمایش هر ثابت بسته به نوع آن عمل می کنیم که شرح هریک در زیر آمده است :
۴ ثوابت عددی صحیح : برای نمایش این دسته از ثوابت، از دنباله ای از ارقام بعلاوه علامت + یا - استفاده می کنیم. بعنوان مثال ۴۵- و یا ۳۴۸۹ ثوابت صحیح هستند. در حالت عادی C هر عدد را در کوچکترین نوع داده ای که می تواند قرار می دهد. مثلا عدد ۸۵ در یک int قرار می گیرد، اما عدد ۱۴۵۳۹۸ در یک long int قرار خواهد گرفت. اما اگر قصد دارید یک عدد کوچک بعنوان long محسوب گردد، می توانید از پسوند L در انتهای آن استفاده می کنیم. مثلا ۲۴۵L یک عدد long محسوب می شود.
long int a = 20L;
ضمن اینکه پسوند U در انتهای عدد نیز نشانه بدون علامت بودن آن است.
نکته دیگر آنکه C به شما اجازه می دهد درصورت لزوم ثوابت صحیح خود را در مبنای ۸ یا ۱۶ نیز که از مبناهای متداول در برنامه نویسی هستند، بنویسید. برای نوشتن عدد در مبنای ۸ باید آن را با ۰ آغاز کنید، مثلا ۰۳۴۲ یک عدد در منای ۸ محسوب می گردد. اما برای نوشتن یک عدد در مبنای ۱۶ باید آن را با ۰x آغاز نمایید، مانند ۰×۲۷A4.
8 ثوابت عددی اعشاری : برای نمایش اعداد اعشاری، باید از نقطه اعشار استفاده کنیم، مانند ۲۳۷٫۴۵ ، اما نکته جالب آنستکه می توانید از نماد علمی نیز برای نمایش اعداد اعشاری استفاده کنید. برای اینکار کافی است از حرف e برای نمایش قسمت توان استفاده نمایید. بعنوان مثال :
-۲۳٫۴۷ × ۱۰ ۵ = -۲۳٫۴۷e5
42.389 × ۱۰ -۳ = ۴۲٫۳۸۹e-3
دقت کنید که قسمت توان، حتما یک عدد صحیح است. نکته جالب اینجاست که برخلاف مورد قبل، کامپایلر بطور پیش فرض داده های اعشاری را از نوع double فرض می کند.چنانچه دوست دارید ثابت شما ازنوع float درنظر گرفته شود، در انتهای آن F قرار دهید. ضمنا پسوند L نیز داده اعشاری را از نوع long double درنظر می گیرد. ۱۰ ثوابت کاراکتری : برای نشان دادن ثوابت کاراکتری، آنها را در داخل ‘ قرار می دهیم. بعنوان مثال ‘A’ یک ثابت کاراکتری است.
char ch = ‘S’ ;
دقت کنید که همانطور که قبلا گفته شد، کد اسکی کاراکترها در متغیر ذخیره می گردد، بنابراین می توان از آن بعنوان یک عدد صحیح نیز استفاده کرد. نکته مهم دیگر آنستکه به تفاوت عدد ۵ و کاراکتر ‘۵′ دقت داشته باشید. در حقیقت ‘۵′ برابر است با عدد ۵۳ که همان کد اسکی آن است.
از آنجا که بعضی کاراکترها، مانند enter قابل نمایش نیستند، بهمین دلیل آنها را با استفاده از \ نمایش می دهیم. علاوه براین بعضی کاراکترها مانند خود ” نیز چون دارای معنای خاص هستند، باید با استفاده از \ نمایش داده شوند. موارد مهم عبارتند از :
\n خط جدید
\t tab کاراکتر
\a بوق کامپیوتر \” ”
\’ ‘ \\ \
۱۴ ثوابت رشته ای : C علاوه بر ثوابت فوق، از یک ثابت دیگر بنام رشته نیز حمایت می کند. رشته، دنباله ای از کاراکترها است که در داخل ” قرار می گیرند. بعنوان مثال “this is a test” یک رشته است. دقت کنید که ‘a’ یک کاراکتر است، اما “a” یک رشته است که فقط شامل یک کاراکتر می باشد.
عملگرها
عملگر، نمادی است که به کامپایلر می گوید تا عملیات محاسباتی یا منطقی خاصی را برروی یک یا چند عملوند، انجام دهد. به عملگرهایی که فقط یک عملوند دارند، عملگر یکانی می گوییم و همواره عملگر در سمت چپ عملوند قرار می گیرد(مانند عدد -۱۲۵). اما عملگرهایی که برروی دو عملوند اثر می کنند را عملگر دودویی نامیده و عملگر را بین دو عملوند قرار می دهیم (مانند ۲۳+۸۶). هر ترکیب درستی از عملگرها و عملوندها را یک عبارت می نامیم.
C از نقطه نظر عملگرها یک زبان بسیار قوی است. این عملگرها به چند دسته اصلی تقسیم می گردند که آنها را به ترتیب بررسی می کنیم..
عملگرهای محاسباتی
این عملگرها، همان اعمال متداول ریاضی هستند که در زبان C مورد استفاده قرار می گیرند. این اعمال عبارتند از :
عمل
نوع
عملگر
منفی کردن عملوند سمت راست
یکانی
-
جمع دو عملوند
دودویی
+
تفریق دو عملوند
دودویی
-
ضرب دو عملوند
دودویی
*
تقسیم دو عملوند
دودویی
/
محاسبه باقیمانده تقسیم دو عملوند
دودویی
%
عملگرهای فوق برروی همه انواع داده های C عمل می کنند بجز عملگر % که فقط برروی نوع داده های صحیح عمل میکند و برروی داده های اعشاری تعریف نشده است. اما نکته مهمی که باید به آن اشاره کرد، نحوه کار عملگر تقسیم برروی نوع داده های مختلف است. درصورتیکه هردو عملوند صحیحی باشند، تقسیم بصورت صحیح بر صحیح انجام خواهد شد. اما اگر یکی یا هر دو عملوند اعشاری باشند، تقسیم بصورت اعشاری انجام خواهد پذیرفت. فرض کنید تعاریف زیر را داریم :
int a,b ;
float c,d ;
a = 10 ; b = 4 ;
c = 8.2; d = 4.0;
اکنون به نتایج عملیات زیر دقت کنید :
a / b = < 2
c / d = < 2.05
a / d = < 2.5
a / 4 = < 2
چنانچه به آخرین مورد توجه کنید، متوجه می شوید که از آنجا که a یک متغیر صحیح است و ۴ نیز یک ثابت صحیح در نظر گرفته شده، درنتیجه تقسیم بصورت صحیح بر صحیح انجام گرفته است. چنانچه بخواهیم تقسیم بصورت اعشاری صورت پذیرد، به دو شکل می توانیم عمل کنیم. اول اینکه آن را بصورت a / 4.0 بنویسیم و دوم اینکه از عملگر قالب ریزی استفاده کنیم.
عملگر قالب ریزی می تواند یک نوع را به نوع دیگری تبدیل نماید. شکل کلی آن به شکل زیر است :
(< type >) < expression >
که type نوع مورد نظر است که قصد تبدیل عبارت expression به آن نوع را داریم. بعنوان مثال در مورد بالا می توان به شکل زیر عمل کرد :
(float) a / 4
در این حالت ابتدا از کامپایلر خواسته ایم که ابتدا عدد a را به اعشاری تبدیل کند (البته بصورت موقت) و سپس آن را بر ۴ تقسیم نماید، که مسلما حاصل اعشاری خواهد بود.
بطورکلی هرگاه ثابتها و متغیرهایی از انواع مختلف در یک عبارت محاسباتی داشته باشیم، کامپایلر C همه آنها را به یک نوع یکسان که همان بزرگترین عملوند موجود است تبدیل خواهد کرد. بعنوان مثال به مورد زیر دقت کنید :