مشخصات مقاله
-
787
-
0.0
-
5489
-
0
-
0
انواع متغیر Data Type در C++
انواع متغیر و نوع داده ای در ++C (Variable types)
همان طور که در مباحث قبلی شرح داده شد، متغیر یک فضا در حافظه جهت ذخیره مقدار تعریف کرده و اسم معینی به آن اختصاص می دهد. هر متغیر در ++C دارای نوع خاصی می باشد و سیستم عامل بر اساس نوع اعلان شده برای آن متغیر در حافظه فضای خالی کنار گذاشته، بازه مقادیری که قابلیت ذخیره در آن را دارد مشخص و نیز مجموعه عملیاتی که بر روی آن متغیر قابل پیاده سازی می باشد را تعیین می کند.
در اسم متغیر می توانید از حروف، اعداد و کاراکتر underscore استفاده نمایید. اسم متغیر بایستی با یک حرف یا "_" آغاز شود.
از آنجایی که ++C به کوچک و بزرگی حروف حساس و به اصطلاح case-sesitive است، حروف کوچک و بزرگ از یکدیگر کاملا متمایز هستند.
انواع متغیر (نوع داده ای) در زبان ++C به شرح زیر می باشد:
در ++C انواع داده ای دیگری نیز همچون Enumeration، Pointer، Array، Reference، Data Structure و Class وجود دارد که در فصول بعدی شرح خواهیم داد.
بخش زیر نحوه ی تعریف و استفاده از انواع متغیر را شرح می دهد.
تعریف متغیرها در ++C
توسعه دهنده در تعریف متغیر، به کامپایلر اعلان می کند که چه میزان فضا در حافظه را برای ذخیره ی مقدار متغیر مورد نظر رزرو کند. در اعلان یک متغیر در واقع نوع داده ای که قرار است در فضای رزرو شده ذخیره گردد نیز مشخص می شود.
توسعه دهنده می تواند با ذکر نوع متغیر، لیستی از متغیرها (البته از نوع یکسان) را در یک خط واحد اعلان نماید:
type variable_list;
در نمونه ی جاری، type بایستی یک نوع مجاز و استاندارد در ++C باشد (char، w_char، int، float، double، bool یا هر آبجکت اختصاصی دیگر که کاربر تعریف می کند) و variable_list می تواند از چندین اسم متغیر که توسط ویگول از هم جدا شده اند، تشکیل شده باشد. در زیر نمونه هایی که نحوه ی صحیح اعلان متغیر را نمایش می دهد، مشاهده می کنید:
int i, j, k; char c, ch; float f, salary; double d;
خط اول، int i, j, k، متغیرهای i، j و k را تعریف کرده و به کامپایلر اعلان می کند که متغیرهایی به نام i، j و k از نوع داده ای عدد صحیح یا int را در حافظه ایجاد کند.
متغیرها را می توان در همان خطی که اعلان شده اند، مقداردهی اولیه (initialize) کرد. برای این منظور پس از اسم متغیر، یک عملگر انتساب و به دنبال آن مقدار مورد نظر را به صورت زیر درج می کنید:
type variable_name = value;
مثال:
extern int d = 3, f = 5; // declaration of d and f. int d = 3, f = 5; // definition and initializing d and f. byte z = 22; // definition and initializes z. char x = 'x'; // the variable x has the value 'x'.
در خصوص تعریف متغیر بدون مقداردهی اولیه ی آن در خط اعلان باید گفت که این متغیرها، به صورت ضمنی با NULL مقداردهی شده و مقدار اولیه ی باقی متغیرها نامشخص خواهد بود.
اعلان متغیر در ++C (Variable Declaration)
تعریف متغیر به کامپایلر این اطمینان را می دهد که تنها یک متغیر با نوع و اسم ارائه شده وجود دارد. بدین وسیله کامپایلر می تواند بدون نیاز به کسب اطلاعات جزئی درباره ی متغیر، به راحتی به ترجمه ی کامل کد بپردازد. اعلان متغیر در زمان ترجمه و کامپایل اپلیکیشن معنا پیدا می کند و کامپایلر به هنگام انجام عملیات لینک و بارگذاری برنامه، نیاز دارد که متغیر به صورت صریح و دقیق تعریف شده باشد.
زمانی متوجه کارایی اعلان متغیر یا variable declaration می شوید که در برنامه ی خود از چندین فایل استفاده کرده، در حالی که متغیر خود را در تنها یک فایل تعریف کرده اید و آن فایل در زمان انجام عملیات لینک برنامه در دسترس می باشد. لازم به ذکر است که توسعه دهنده می تواند با استفاده از کلیدواژه ی extern یک متغیر در مکان دلخواه (برای مثال خارج از بدنه ی تابع) تعریف کند. کلیدواژه ی مزبور برای این تعبیه شده که توسعه دهنده بتواند یک متغیر را به صورت سراسری اعلان کند.
هر چند شما می تواند در برنامه های ++C خود، یک متغیر را چندین بار اعلان کنید، ولی اجازه دارید تنها یکبار آن را در فایل، بدنه ی تابع یا قطعه کد مورد نظر در آن واحد تعریف نمایید.
مثال:
در زیر نمونه کدی را مشاهده می کنید که متغیر یکبار در بالای فایل با کلیدواژه ی extern (خارج از حوزه ی دسترسی تابع یا ساختمان کد) اعلان شده، ولی داخل بدنه ی تابع main نیز تعریف شده و در خطوط بعدی مقداردهی اولیه گردیده است:
#includeusing namespace std; // Variable declaration: extern int a, b; extern int c; extern float f; int main () { // Variable definition: int a, b; int c; float f; // actual initialization a = 10; b = 20; c = a + b; cout << c << endl ; f = 70.0/3.0; cout << f << endl ; return 0; }
زمانی که از کد بالا خروجی می گیرد، نتیجه ی زیر را بدست می دهد:
30 23.3333
همین قاعده در خصوص تعریف تابع نیز حکم می کند، به طوری که شما می توانید اسم تابع را در زمان اعلان آن مشخص کنید، ولی تعریف واقعی تابع (پیاده سازی منطق آن) را در مکان دلخواه داخل فایل انجام دهید.
مثال:
// function declaration
int func();
int main() {
// function call
int i = func();
}
// function definition
int func() {
return 0;
}
Lvalue و Rvalue (انواع عبارات در ++C)
در زبان ++C دو نوع عبارت وجود دارد:
- Ivalue – عبارت هایی که به مکانی در حافظه اشاره می کنند، در اصطلاح Ivalue خوانده می شود. در یک تساوی (دو طرف یک عملگر تخصیص یا =)، lvalue ممکن است یا در سمت چپ و یا در سمت راست عملگر تخصیص قرار گیرد.
- rvalue – واژه ی rvalue به مقدار داده ای اشاره دارد که در آدرسی معین در حافظه ذخیره شده است. rvalue یک عبارت است که نمی تواند مقداری به آن اختصاص یابد. به عبارت دیگر می تواند در سمت راست تساوی قرار گیرد ولی هیچگاه امکان درج آن در چپ عملگر تخصیص وجود ندارد.
- متغیرها عباراتی از نوع Ivalues هستند و ممکن است در سمت چپ عملگر تخصیص قرار گیرند. مقادیر عددی ثابت (numeric literals) از نوع rvalues هستند و به همین جهت نمی توانند در سمت چپ عملگر قرار گیرند. در زیر یک دستور مجاز و معتبر را مشاهده می کنید:
int g = 20;
اما دستور زیر به هیچ وجه موجه و از نظر کامپایلر صحیح نیست:
10 = 20;