زبان برنامه نویسی سی/متغیرها: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
جزبدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
خط ۱۱۸:
| 0 —— 65,535 || 2 || unsigned short , unsigned short int , unsigned int
|-
| -−22,147,483,648 —— 2,147,483,647 || 4 || signed long , signed long int , long , long int
|-
| 0 —— 4,294,967,295 || 4 || unsigned long , unsigned long int
خط ۱۳۴:
{{پایان چپ‌چین}}
 
در سیستم‌هایی با پردازشگرهای ۶۴ بیتی ، تنها تفاوتی که وجود دارد این است که int به اندازه long در سیستم‌های ۳۲ بیتی است ( یعنی ۴ بایت ) و long به اندازه long long ( یعنی ۸ بایت ) است . بنابراین signed int به اندازه signed long و unsigned int به اندازه unsigned long و signed long به اندازه signed long long و unsigned long به اندازه unsigned long long است و long long در سیستم‌های ۶۴ بیتی همانند سیستم‌های ۳۲ بیتی است
متغیر هایی که از نوع اعشاری هستند ، همانطور که از اسمشان پیداست ؛ جهت ذخیره اعداد اعشاری به کار می روند . بنابراین اگر قصد ایجاد یک عدد اعشاری را ندارید ، بیهوده از آنها استفاده ننمائید و تنها زمانی دست به ایجاد متغیر هایی از نوع عدد اعشاری بزنید که به آنها نیاز داشته باشید ، آن هم دقیقاً متناسب با مقدار مورد نیاز خود . متغیر های float دقت کم تری نسب به double و در نهایت نسبت به long double دارند .
دقت کنید که برخی کامپایلر های قدیمی نوع داده long long یا همان long long int را به رسمیت نمی شناسند و یا حتی long double را ، ابتدا از به رسمیت شناخته شدن این نوع داده ها توسط کامپایلر خود ، پیش از استفاده از آنها ، اطمینان حاصل نمائید . همچنین به صورت اختیاری برخی کامپایلر ها از نوع داده long long double پشتیبانی می نمایند که می تواند در محیط آن کامپایلر ها از این نوع داده استفاده نمائید ، اما یک نوع داده استاندارد نیست .
 
متغیر هایی که از نوع اعشاری هستند ، همانطور که از اسمشان پیداست ؛، جهت ذخیره کردن اعداد اعشاری به کار می روندمی‌روند . بنابراین اگر قصد ایجاد یک عدد اعشاری را ندارید ، بیهوده از آنها استفاده ننمائید ( چرا که دارای قسمت اعشاری خواهند شد ) و تنها زمانی دست به ایجاد متغیر هاییمتغیرهایی از نوع عدد اعشاری بزنید که به آنها نیاز داشته باشید ، آن هم دقیقاً متناسب با مقدار مورد نیاز خود . متغیر های float دقت کم تریکم‌تری نسب به double و در نهایت نسبت به long double دارند .، اگر قسمت اعشار عدد مورد نیاز شما خیلی ارقام زیادی ندارد از همان float استفاده کنید ، اگر زیاد است از double و اگر خیلی زیاد است از long double
کاملاً دقت داشته باشید که انواع داده ای float و double و long double به صورت پیش فرض علامت دار هستند و بازه عددی آنها در کوچک ترین و بزرگ ترین اعدادی که می توانند ذخیره کنند را در جدول نوشتیم که همین مقدار با قوانینی که بیان گردید در بازه اعداد مثبت نیز قرار می گیرد و شما نمی توانید آنها را بر خلاف نوع داده ای مثل int بدون علامت نمائید .
دقت کنید که برخی کامپایلر های قدیمی ، نوع داده long long یا همان long long int را به رسمیت نمی شناسندنمی‌شناسند و یا حتی long double را ، ابتدا از به رسمیت شناخته شدن این نوع داده هاداده‌ها توسط کامپایلر خود ، پیش از استفاده از آنها ، اطمینان حاصل نمائید . همچنین به صورت اختیاری برخی کامپایلر هاکامپایلرها از نوع داده long long double پشتیبانی می نمایندمی‌نمایند که می تواندتوانید در محیط آن کامپایلر هاکامپایلرها از این نوع داده استفاده نمائید ، اما یک نوع داده استاندارد نیست .
 
کاملاً دقت داشته باشید که انواع داده ایداده‌ای float و double و long double به صورت پیش فرض علامت دارعلامت‌دار هستند و بازه عددی آنها را در کوچک ترینکوچک‌ترین و بزرگ ترینبزرگ‌ترین اعدادی که می توانندمی‌توانند ذخیره کنند را، در جدول نوشتیم که همین مقدار با قوانینی که بیان گردید در بازه اعداد مثبت نیز قرار می گیرد و شما نمی توانیدنمی‌توانید آنها را بر خلاف نوع داده ای مثل int بدون علامت نمائید .( یعنی نمی‌توانید برای آنها از کلیدواژه unsigned استفاده کنید )
حتی اگر مبانی ریاضیات را به خوبی می دانید بدنیست ، به استاندارد تعریف شده اعداد اعشاری توسط مؤسسه مهندسان برق و الکترونیک رجوع کنید تا بهتر از نحوه پردازش و ذخیره اعداد اعشاری در رایانه آگاه شوید :
 
حتی اگر مبانی ریاضیات را به خوبی می دانیدمی‌دانید بدنیست ، به استاندارد تعریف شده اعداد اعشاری توسط مؤسسه مهندسان برق و الکترونیک رجوع کنید تا بهتر از نحوه پردازش و ذخیره اعداد اعشاری در رایانه آگاه شوید :
 
https://en.wikipedia.org/wiki/IEEE_floating_point
سطر ۱۴۵ ⟵ ۱۴۷:
=== متغیر های کاراکتری ===
 
به واسطه استفاده از کلیدواژه char شما مجاز و مجبور به استفاده از یک داده کاراکتری در متن برنامه سی خود هستید . همانند متغیر های عددی ، متغیر کاراکتری نیز باید یک نام ( شناسه ) داشته باشدباشند و شما می توانیدمی‌توانید اول آن را اعلان کرده و سپس تعریف نمائید . ولی در داخل هر داده کاراکتر تنها یک کاراکتر که می تواند هر کدام از کاراکتر های ANSIASCII مطابق با استاندارد 98/99 باشد و مطابق با آخرین استاندارد زبان سی یعنی C11 شما می توانید هر کدام از کاراکتر هایکاراکترهای Unicode را ( UTF-8 و UTF-16 ) ذخیره نمائید . اما اکثر کامپایلر هاکامپایلرها ، هنوز با آخرین استاندارد سی ، به روز رسانی نشده اندنشده‌اند . هر کاراکتری را که میخواهیدمی‌خواهید در متغیر خود ذخیره نمائید باید داخل دو علامت سینگل کوت قرار دهید . مانند : '0' یا 'A' یا '*' که هر کدام یک کاراکتر از کاراکتر های کاراکترست ANSIASCII هستند . کاراکترست های بسیاری موجود هستند که در ابتدای کتاب نیز بدین مبحت اشاره نمودیم . اما شما برای کار با زبان سی باید تا به صورت مطلوبی به کاراکترست ANSIASCII مسلط باشید . ANSI نام مستعاراصلی کاراکترستآن ASCII می‌باشد که توسط ANSI اسکی( موسسهسازمان استاندارد سازی آمریکاستملی ،آمریکا بنابراین) نامبه اصلیتصویب آنرسیده ASCIIاست میو باشددارای که۱۲۸ دارایکاراکتر استاندارد و 128۱۲۸ کاراکتر میاضافه باشدشده .می‌باشد
 
در هر کاراکترست ، مقدار متناظر کاراکتری برای هر مقدار باینری موجود می باشدمی‌باشد . بنابراین زمانی که شما کاراکتر عدد هشت را به صورت '8' در داخل یک متغیر کاراکتری ذخیره می نمائید ، مقدار آن 56 خواهد بود و نه 8 . یعنی زمانی که شما با اعداد کار می کنید ، واسطه ای در کار نیست و عدد 8 شما اگر در مبنای 10 ذخیره و پردازش گردد ، همان 8 است . اما زمانی که می خواهید کاراکتر 8 را در یک متغیر کاراکتری ذخیره نمائید ، این مقدار یک عدد نیست بلکه به مثابه یک حرف و به عبارت بهتر یک کاراکتر است که در درون متغیر ذخیره می گردد .
 
نوع داده کاراکتری به شما کمک می کندمی‌کند تا در مواقعی که نیاز به نوشتن و خواندن متن در برنامه خود دارید از اتلاف وقت جلوگیری گرددشود . در صورت عدم وجود این نوع داده شما خودتان موظف بودید تا متون را به مقادیر عددی بنویسید و وارد کنید و در نهایت تحویل بگیرید . نحوه ایجاد یک کاراکتر :
 
{{چپ‌چین}}
سطر ۱۵۷ ⟵ ۱۵۹:
{{پایان چپ‌چین}}
 
از آنجایی که هنوز با مبحث اشاره گراشاره‌گر ها آشنا نشدهنشده‌اید ایم، نمی توانیم مبحث را خلط کنیم ، اما اگر مشتاقید تا بدانید که چگونه می توان متونی را که مطمئناً بیش از یک کاراکتر هستند در سی استفاده نمود ؛، باید بگوئیم که با استفاده از ترفند اشاره گراشاره‌گر و اضافه نمودن آن به تعریف کارکتر در برنامه خود می توانیممی‌توانیم ، متونی را که حتماً به یاد دارید و به آنها رشته می گوئیممی‌گوئیم ، ذخیره و مورد پردازش قرار داد .
 
'''enum'''