نوع داده عدد صحیح از یک تابع. متغیرها تعیین نوع Postfix


به داده هابه هر گونه اطلاعات ارائه شده به شکلی اشاره دارد که به شما امکان می دهد جمع آوری، ذخیره و پردازش آن را در رایانه به طور خودکار انجام دهید (اعداد، نمادها، بیت ها و غیره).
داده های موجود در برنامه می تواند باشد اصلی(تنظیم شده در ورودی برنامه) یا نتایج پردازش(متوسط ​​یا آخر هفته).
همه داده ها - متغیرها و ثابت ها - متعلق به یک نوع خاص هستند.
هر نوع داده مربوط به خود است محدوده مقادیر(تعداد بایت برای یک مقدار) و عملیات معتبر.

انواع داده ها در C/C++ به دو دسته تقسیم می شوند پایه ایو مشتقات.
انواع اصلی عبارتند از:

  1. خالی(نوع خالی)
  2. بین المللی(نوع عدد صحیح)،
  3. شناور(اعداد ممیز شناور واقعی)،
  4. دو برابر(اعداد واقعی ممیز شناور با دقت دو برابر)،
  5. کاراکتر(نوع شخصیت)،
  6. بوول- منطقی

انواع کامپوزیت

برای تولید انواع دیگر از داده ها استفاده کنید پایه ایانواع + به اصطلاح مشخص کننده ها. انواع داده های ایجاد شده از انواع استاندارد با استفاده از مشخص کننده ها نامیده می شوند انواع داده های ترکیبی. C++ چهار مشخص کننده نوع داده را تعریف می کند:
  1. کوتاه - کوتاه;
  2. طولانی - طولانی؛
  3. امضا شده-امضا;
  4. بدون امضا
انواع مشتق شده عبارتند از:
  • آرایه ها،
  • کارکرد،
  • کلاس ها،
  • نشانه ها،
  • پیوندها،
  • سازه های،
  • انجمن ها

نوع کاراکتر

نوع داده کاراکترهمیشه 1 بایت در حافظه کامپیوتر اشغال می کند. این به دلیل این واقعیت است که معمولاً مقدار حافظه اختصاص داده شده برای مقدار نوع کاراکتر به اندازه ای است که برای ذخیره هر یک از 256 کاراکتر صفحه کلید لازم است.
نوع کاراکتر می تواند باشد با علامتیا بدون امضا.
در مقادیر امضا شده کاراکتر امضا شدهمی توانید مقادیر را در بازه 128- تا 127 ذخیره کنید. بر این اساس، مقادیر متغیرهایی مانند کاراکتر بدون امضامی تواند از 0 تا 255 متغیر باشد.
نوع داده محدوده ارزش ها اندازه
کاراکتر -128...+127 1 بایت
کاراکتر بدون امضا 0...255 1 بایت
کاراکتر امضا شده -128...127 1 بایت

هنگام کار با داده های کاراکتر، باید به خاطر داشته باشید که اگر یک عبارت حاوی است تک شخصیت، باید محصور شود نقل قول های تک. دنباله ای از کاراکترها، یعنی یک رشته، وقتی در عبارات استفاده می شود در دو نقل قول. به عنوان مثال: «F»، «3»، «ایوان»، «235»

نوع عدد صحیح

نوع داده بین المللیحافظه کامپیوتر می تواند 2، 4 یا 8 بایت را اشغال کند. این به اندازه بیت پردازنده بستگی دارد.
به طور پیش فرض، همه انواع اعداد صحیح علامت دار در نظر گرفته می شوند، یعنی مشخص کننده امضاء شده(علامت) ممکن است مشخص نباشد.
مشخص کننده بدون امضا(بدون علامت) اجازه می دهد فقط اعداد مثبت نمایش داده شوند.

محدوده مقادیر صحیح

نوع داده محدوده ارزش ها اندازه (بایت)
بین المللی
امضا شده
امضای طولانی بین المللی
-2147483648 ... 2147483647 4
بدون امضا
بدون امضا طولانی int
0 ... 4294967295 4
داخلی کوتاه
امضا کوتاه بین المللی
-32768 ... 32767 2
بدون امضا کوتاه 0... 65535 2
طولانی طولانی int \(-(2^{63}-1)...(2^{63}-1)\) 8
بدون امضا طولانی
طولانی بین المللی
\(0...(2^{64}-1)\) 8

نوع واقعی

نمایش داخلی یک عدد واقعی در حافظه کامپیوتر با نمایش یک عدد صحیح متفاوت است. یک عدد ممیز شناور با نشان داده می شود به شکل نمایی. $$\pm mE\pm p$$ کجا متر- مانتیس (عدد صحیح یا کسری با نقطه اعشار)، آر- سفارش (عدد صحیح). برای تبدیل یک عدد به صورت نمایی به نماد نقطه ثابت معمولی، باید مانتیسا را ​​در ده ضرب کنید تا به توان ترتیب آن بپردازید، به عنوان مثال: \(-6.42E+2=-6.42*10^(2)\ )

محدوده ارزش انواع واقعی

نوع داده محدوده ارزش ها اندازه (بایت)
شناور 3.4E-38 ... 3.4E+38 4
دو برابر 1.7E-308... 1.7E+308 8
دوبل بلند 3.4E-4932 ... 3.4E+4932 10

طول آخوندک دقت عدد و طول ترتیب دامنه آن را تعیین می کند.
داده شناور 4 بایت می گیرد که 1 بیت باینری برای علامت، 8 بیت برای توان و 23 بیت برای مانتیس اختصاص داده می شود. از آنجایی که مهم ترین رقم مانتیس همیشه 1 است، ذخیره نمی شود.
داده های نوع دوگانه 8 بایت را اشغال می کنند، آنها به ترتیب دارای 11- بیت برای مرتبه و -52 بیت برای مانتیس هستند.
مشخص کننده نوع طولانی قبل از نام نوع دوگانه نشان می دهد که 10 بایت برای مقدار تخصیص داده شده است.

نوع بولی

متغیر را تایپ کنید بوولفقط دو مقدار می تواند بگیرد درست است، واقعی(درست) یا نادرست(دروغ). هر مقدار غیر صفر به عنوان درست تفسیر می شود و وقتی به یک نوع عدد صحیح تبدیل می شود به 1 تبدیل می شود. مقدار false در حافظه به صورت 0 نشان داده می شود.

void را تایپ کنید

مجموعه مقادیر این نوع خالی است.
نوع void برای موارد زیر استفاده می شود:
  • تعاریف توابعی که مقداری را بر نمی گرداند.
  • برای تعیین یک لیست خالی از آرگومان های تابع؛
  • به عنوان یک نوع پایه برای اشاره گر.
  • در عملیات تبدیل نوع

اعلان متغیرها

متغیریک ناحیه نامگذاری شده از حافظه است که مقداری از نوع خاصی را ذخیره می کند.
متغیر دارد نام(شناسه) و معنی.
نامبرای دسترسی به ناحیه حافظه ای که مقدار در آن ذخیره شده است استفاده می کند.
نام(شناسه) مجموعه ای از حروف، اعداد و خط زیر است که نام یک متغیر، نام یک تابع یا یک کلمه کلیدی را در یک برنامه مشخص می کند. زبان C/C++ به حروف بزرگ و کوچک حساس است (یعنی Sum و sum به عنوان دو متغیر متفاوت در نظر گرفته می شوند).
جایی که، نوع- یک کلمه کلیدی که مقدار حافظه (تعداد بایت) اختصاص داده شده برای ذخیره مقدار یک متغیر (به عنوان یک شی برنامه) را تعریف می کند (int – integer, float, double – real, char – symbolic, bool – logical)؛
نامشناسه منحصر به فردمتغیری که آدرس نمادین یک شی برنامه را در حافظه کامپیوتر مشخص می کند.
آغازگر– مقدار اولیه متغیر که ممکن است در توضیحات نباشد.
به عنوان مثال: متغیرهای یک نوع را می توان با جدا کردن آنها با "،" گروه بندی کرد. توضیحات متغیرها انواع متفاوتبا " ; "
بسته به جایی که اعلان می شوند، متغیرها در زبان C/C++ را می توان به سه کلاس تقسیم کرد:
  1. محلی - در داخل یک تابع اعلام شده و فقط در آن موجود است.
  2. جهانی - قبل از همه توابع توصیف شده و از هر نقطه برنامه قابل دسترسی است.
  3. پارامترهای رسمی توابع در لیست پارامترهای تابع توضیح داده شده است.
مثال:

نوع عدد صحیح (int)

اندازه تایپ بین المللیتوسط استاندارد تعریف نشده است، اما به کامپیوتر و کامپایلر بستگی دارد.

برای یک پردازنده 16 بیتی، 2 بایت برای مقادیر از این نوع تخصیص داده می شود.

برای 32 بیت - 4 بایت.

مشخص کننده کوتاهقبل از اینکه نام نوع به کامپایلر نشان دهد که 2 بایت باید به عدد اختصاص داده شود، صرف نظر از عمق بیت پردازنده.

مشخص کننده طولانیبه این معنی است که مقدار عدد صحیح 4 بایت را اشغال می کند.

بنابراین در یک کامپیوتر 16 بیتی معادل int و short int هستند

و روی 32 بیت - int و long int.

نمایندگی داخلیمقادیر از نوع عدد صحیح - یک عدد صحیح در کد باینری. هنگام استفاده از مشخص کننده امضاء شدهمهم ترین بیت عدد به صورت علامت دار تفسیر می شود (0 عدد مثبت و 1 عدد منفی است). مشخص کننده بدون امضااجازه می دهد تا فقط اعداد مثبت نمایش داده شوند، زیرا مهم ترین بیت به عنوان بخشی از کد عدد در نظر گرفته می شود. بنابراین، محدوده مقادیر int به مشخص کننده ها بستگی دارد. محدوده مقادیر مقادیر نوع عدد صحیح با مشخص کننده های مختلف برای رایانه های سازگار با IBM PC در جدول "محدوده های ارزش انواع داده های ساده" آورده شده است.

به طور پیش فرض، همه انواع اعداد صحیح امضا شده در نظر گرفته می شوند، به این معنی که مشخص کننده امضا شده را می توان حذف کرد.

ثابت هایی که در یک برنامه یافت می شوند با توجه به نوع آنها یک نوع یا نوع دیگر اختصاص داده می شوند. اگر به دلایلی مناسب برنامه نویس نیست، می توانید به صراحت نوع مورد نیاز را با استفاده از پسوندهای L، l (طولانی) و U، u (بدون علامت) مشخص کنید. به عنوان مثال، ثابت 32L از نوع long و 4 بایت خواهد بود. می توانید از پسوندهای L و U به طور همزمان استفاده کنید، به عنوان مثال، 0x22UL یا 05Lu.

توجه داشته باشید.انواع short int، long int، signed int و unsigned int را می توان به ترتیب به short، long، signed و unsigned مخفف کرد.

نوع کاراکتر (کاراکتر)

مقدار یک نوع کاراکتر تعدادی بایت به اندازه کافی برای قرار دادن هر کاراکتری از مجموعه کاراکترها برای یک رایانه معین اختصاص می‌یابد، که همان چیزی است که نام نوع را تعیین می‌کند. به طور معمول این 1 بایت است. نوع کاراکتر مانند سایر انواع عدد صحیح می تواند دارای علامت یا بدون علامت باشد. مقادیر امضا شده می توانند مقادیر را در محدوده -128 تا 127 ذخیره کنند. با استفاده از مشخص کننده بدون علامت، مقادیر می توانند از 0 تا 255 متغیر باشند. این برای ذخیره هر کاراکتری در مجموعه کاراکترهای 256 کاراکتری ASCII کافی است. از مقادیر نوع char نیز برای ذخیره اعداد صحیح استفاده می شود.



نوع کاراکتر توسعه یافته (wchar_t)

تایپ کنید wchar_tطراحی شده برای کار با مجموعه ای از کاراکترها که 1 بایت برای رمزگذاری کافی نیست. مثلا یونیکد. اندازه این نوع به پیاده سازی بستگی دارد. به عنوان یک قاعده، با نوع آن مطابقت دارد کوتاه.ثابت های رشته ای از نوع wchar_t با پیشوند L نوشته می شوند، به عنوان مثال، L"Gates".

نوع بولی (bool)

مقادیر بولی فقط می توانند مقادیر را بگیرند درست است، واقعیو نادرست، که کلمات رزرو شده هستند. شکل داخلی نمایش مقدار false 0 (صفر) است. هر مقدار دیگری به عنوان درست تفسیر می شود. هنگام تبدیل به یک نوع عدد صحیح درست است، واقعیمقدار 1 را دارد.

انواع ممیز شناور (شناور، دوبل و بلند دوبل)

استاندارد C++ سه نوع داده را برای ذخیره مقادیر واقعی تعریف می کند: float، double و long double.

انواع داده های ممیز شناور متفاوت از انواع داده های عدد صحیح در حافظه ذخیره می شوند. نمایش داخلی یک عدد واقعی از دو بخش تشکیل شده است - مانتیسو سفارش.

در رایانه های سازگار با IBM PC، مقادیر از نوع شناور 4 بایت را اشغال می کند که یک رقم باینری به آن اختصاص می یابد زیر علامت مانتیس، 8 رقمی به ترتیبو 23 زیر مانتیس. مانتیس عددی بزرگتر از 1.0 اما کمتر از 2.0 است.از آنجایی که رقم اول مانتیس همیشه 1 است، ذخیره نمی شود.

برای مقادیر از نوع دو برابر،با اشغال 8 بایت، 11 و 52 بیت به ترتیب به ترتیب و مانتیسا اختصاص داده شده است. طول آخوندک دقت عدد را تعیین می کند و طول نما محدوده آن را تعیین می کند.همانطور که در جدول انتهای ورودی مشاهده می کنید، با تعداد یکسانی از بایت های اختصاص داده شده برای مقادیر float و long int، محدوده مقادیر مجاز آنها بسیار متفاوت است. به دلیل فرم نمایندگی داخلی.

مشخص کننده طولانیقبل از نام نوع دو برابرنشان می دهد که 10 بایت به مقدار آن اختصاص داده شده است.

ثابت های ممیز شناور به طور پیش فرض از نوع دوگانه هستند. با استفاده از پسوندهای F, f (شناور) و L, l (طولانی) می توانید به صراحت نوع یک ثابت را مشخص کنید.

به عنوان مثال، ثابت 2E+6L از نوع long double و ثابت 1.82f از نوع float خواهد بود.

هنگام نوشتن برنامه‌هایی که برای پلتفرم‌های مختلف جهانی هستند، نمی‌توانید در مورد اندازه نوع آن فرضیاتی داشته باشید بین المللیبرای به دست آوردن آن باید از عملیات sizeof استفاده کنید که نتیجه آن اندازه نوع بر حسب بایت است.

به عنوان مثال، برای سیستم عاملاندازه MS-DOS (int) به 2 می رسد، اما برای ویندوز 98 یا OS/2 نتیجه 4 خواهد بود.

استاندارد ANSI محدوده مقدار را برای انواع پایه مشخص نمی کند، فقط روابط بین اندازه آنها تعریف شده است، به عنوان مثال:

sizeof(float) ≤ slzeof(دوبل) ≤ sizeof(طولان دوبل)
sizeof(char) ≤ slzeof(کوتاه) ≤ sizeof(int) ≤ sizeof(طولانی)

توجه داشته باشید.حداقل و حداکثر مقادیر مجاز برای انواع عدد صحیح وابسته به پیاده سازی است و در فایل هدر آورده شده است ()، ویژگی های انواع واقعی - در فایل () و همچنین در قالب کلاس numeric_limits

void را تایپ کنید

علاوه بر موارد ذکر شده، انواع اصلی زبان شامل نوع void نیز می شود، اما مجموعه مقادیر این نوع خالی است. برای تعریف توابعی که مقداری بر نمی‌گردانند، برای تعیین یک لیست خالی از آرگومان‌های تابع، به‌عنوان نوع پایه برای اشاره‌گرها، و در عملیات ریخته‌گری نوع استفاده می‌شود.

انواع مختلفانواع عدد صحیح و واقعی، متفاوت در محدوده و دقت نمایش داده ها، به منظور دادن فرصتی به برنامه نویس برای استفاده موثرتر از قابلیت های تجهیزات خاص، معرفی شدند، زیرا سرعت محاسبات و مقدار حافظه به انتخاب بستگی دارد. نوع اما برنامه ای که برای یک نوع کامپیوتر بهینه شده است ممکن است برای پلتفرم های دیگر قابل حمل نباشد، بنابراین به طور کلی باید از وابستگی به ویژگی های خاصانواع داده ها

تایپ کنید محدوده ارزش ها اندازه (بایت)
بوول درست و نادرست
کاراکتر امضا شده -128 … 127
کاراکتر بدون امضا 0 … 255
امضا کوتاه بین المللی -32 768 … 32 767
بدون امضا کوتاه 0 … 65 535
امضای طولانی مدت -2 147 483 648 … 2 147 483 647
بدون امضا طولانی int 0 … 4 294 967 295
شناور 3.4e-38 … 3.4e+38
دو برابر 1.7e-308 … 1.7C+308
دوبل بلند 3.4e-4932 … 3.4e+4932

ساختار برنامه

یک برنامه C++ شامل کارکرد, توضیحاتو دستورالعمل های پیش پردازنده. یکی از توابع باید نام داشته باشد اصلی. اجرای برنامه با اولین عبارت این تابع آغاز می شود. ساده ترین تعریف تابع دارای فرمت زیر است:

به طور معمول، یک تابع برای محاسبه یک مقدار استفاده می شود، بنابراین نوع آن قبل از نام تابع نشان داده می شود. در زیر مهمترین اطلاعات در مورد عملکردها آمده است:

  • اگر تابع نباید مقداری را برگرداند، نوع void مشخص می شود:
  • بدنه تابع یک بلوک است و بنابراین در بریس های فرفری محصور شده است.
  • توابع را نمی توان تودرتو کرد.
  • هر عبارت با یک نقطه ویرگول (به جز عبارت مرکب) به پایان می رسد.

مثالی از ساختار برنامه حاوی توابع main، fl و f2:

این برنامه ممکن است از چندین مورد تشکیل شده باشد ماژول ها(فایل های منبع).

نکات مربوط به I/O در C++

زبان C++ فاقد امکانات ورودی/خروجی داخلی است - با استفاده از توابع، انواع و اشیاء موجود در کتابخانه های استاندارد انجام می شود.

دو روش استفاده می شود: توابع به ارث رسیده از زبان C و اشیاء C++.

توابع ورودی/خروجی سبک C پایه:

int scanf (فرمت const char*، ...) // ورودی
int printf(const char* format, ...) // خروجی

آنها ورودی و خروجی فرمت شده تعداد دلخواه مقادیر را با توجه به رشته قالب انجام می دهند. رشته قالب شامل کاراکترهایی است که در خروجی در جریان (روی صفحه) کپی می شوند یا از جریان (از صفحه کلید) در ورودی درخواست می شوند و مشخصات تبدیل با علامت % شروع می شوند که با مقادیر خاصی در ورودی جایگزین می شوند. و خروجی

یک برنامه نمونه با استفاده از توابع ورودی/خروجی به سبک C:

#عبارتند از
int main() (
int i;
printf("یک عدد صحیح را وارد کنید\n");
scanf("%d"، &i);
printf("شما عدد %d را وارد کردید، متشکرم!"، i);
بازگشت 0;
}

خط اول این برنامه یک دستورالعمل پیش پردازنده است که یک فایل هدر را در متن برنامه وارد می کند که حاوی توضیحاتی از توابع ورودی/خروجی استفاده شده در برنامه است (در در این موردبراکت های زاویه یک عنصر زبان هستند). همه دستورالعمل های پیش پردازنده با علامت # شروع می شوند.

خط سوم شرحی از یک متغیر نوع صحیح به نام i است.

تابع printf در خط 4 اعلان "Enter an integer" را چاپ می کند و به آن می رود خط جدیدبا توجه به دنباله فرار \n. تابع scanf عدد صحیح وارد شده از صفحه کلید را در متغیر i ذخیره می کند (علامت & نشان دهنده عملیات دریافت آدرس است) و عبارت زیر رشته مشخص شده در آن را نمایش می دهد و مقدار این عدد را جایگزین مشخصات تبدیل می کند.

برنامه با استفاده از کتابخانه کلاس C++:

#عبارتند از
int main() (
int i;
کوت<< "Введите целое число\n"؛ cin >> i;
کوت<< "Вы ввели число " << i << ", спасибо!";
بازگشت 0;
}

فایل هدر حاوی توضیحات مجموعه ای از کلاس ها برای مدیریت ورودی/خروجی است. اشیاء جریان استاندارد را تعریف می کند cinبرای ورودی صفحه کلید و کوتبرای نمایش، و همچنین عملیات قرار دادن در یک جریان< < и чтения из потока >>.

می توانید از هر دو روش سازماندهی ورودی/خروجی استفاده کنید، اما ترکیب آنها در یک برنامه توصیه نمی شود.

در برنامه نویسی، یک نوع داده مجموعه ای از دو مجموعه است: مجموعه ای از مقادیر و مجموعه ای از عملیات که می تواند بر روی آنها اعمال شود. برای مثال، عملیات جمع (+)، ضرب (*)، تقسیم اعداد صحیح (/)، باقیمانده (%)، و تفریق (-) را می توان برای یک نوع داده اعداد صحیح غیرمنفی متشکل از مجموعه محدودی از اعداد طبیعی اعمال کرد.

یک زبان برنامه نویسی معمولاً دارای مجموعه ای از انواع داده های اولیه است – انواعی که توسط زبان برنامه نویسی به عنوان یک واحد داخلی پایه ارائه می شود. در C++، خالق زبان این گونه انواع را انواع بنیادی می نامد. انواع اساسی در C++ عبارتند از:

  • بولی (bool);
  • شخصیت (به عنوان مثال کاراکتر)؛
  • int (به عنوان مثال int)؛
  • نقطه شناور (به عنوان مثال شناور)؛
  • شمارش (تعریف شده توسط برنامه نویس)؛
  • خالی .

در بالای موارد ذکر شده، انواع زیر ساخته شده است:

  • نمایشی (به عنوان مثال int*)؛
  • آرایه ها (به عنوان مثال char)؛
  • مرجع (به عنوان مثال double&);
  • ساختارهای دیگر

بیایید به مفهوم literal برویم (به عنوان مثال، 1، 2.4F، 25e-4، 'a'، و غیره): literal ورودی در کد منبع یک برنامه است که یک مقدار ثابت را نشان می دهد. به عبارت دیگر، literal صرفاً نمایشی از یک شی (مقدار) از نوعی در کد برنامه است. C++ توانایی نوشتن مقادیر صحیح، ممیز شناور، کاراکتر، بولی و رشته ای را دارد.

Literal نوع صحیح را می توان به صورت زیر نوشت:

  • سیستم شماره 10. برای مثال 1205 ;
  • سیستم شماره هشتم با فرمت 0 + عدد. به عنوان مثال 0142;
  • سیستم شماره شانزدهم با فرمت 0x + عدد. به عنوان مثال، 0x2F.

24، 030، 0x18 - اینها همه رکوردهای یکسان در سیستم های اعداد مختلف هستند.
برای نوشتن اعداد ممیز شناور، از علامت نقطه استفاده کنید: 0.1، .5، 4. - یا در
نماد نمایی - 25e-100. در چنین رکوردی نباید هیچ فاصله ای وجود داشته باشد.

به نامی که می توانیم مقادیر نوشته شده به صورت واقعی را با آن مرتبط کنیم، متغیر نامیده می شود. متغیر یک ناحیه نام‌گذاری شده یا آدرس‌پذیر دیگری از حافظه است که آدرس آن می‌تواند برای دسترسی به داده‌ها استفاده شود. این داده ها در حین اجرای برنامه به روش خاصی در حافظه نوشته، بازنویسی و پاک می شوند. یک متغیر به شما امکان می دهد در هر زمان به داده ها دسترسی داشته باشید و در صورت لزوم آن را تغییر دهید. داده هایی که می توانند از نام متغیر بازیابی شوند، مقدار متغیر نامیده می شوند.
برای استفاده از یک متغیر در برنامه باید آن را اعلان کرد و در صورت لزوم می توان آن را تعریف کرد (= مقداردهی اولیه). اعلان یک متغیر در متن برنامه لزوماً شامل 2 بخش است: نوع پایه و اعلام کننده. مشخص کننده و اولیه بخش های اختیاری هستند:

Const int مثال = 3; // در اینجا const یک مشخص کننده است // int نوع پایه است // مثال نام متغیر // = 3 - مقداردهی اولیه است.

نام متغیر دنباله ای از کاراکترها است که از حروف الفبای لاتین (کوچک و بزرگ)، اعداد و/یا زیرخط تشکیل شده است، اما کاراکتر اول نمی تواند عدد باشد. نام متغیر باید طوری انتخاب شود که همیشه به راحتی بتوان حدس زد که چه چیزی را ذخیره می کند، به عنوان مثال، "monthPayment". در یادداشت ها و در عمل از نماد CamelCase برای قوانین ثبت متغیرها استفاده می کنیم. نام متغیر نمی تواند با کلمات رزرو شده در زبان منطبق باشد، نمونه هایی از این کلمات عبارتند از: if، while، function، goto، switch و غیره.

علاوه بر نام متغیر، اعلام کننده می تواند شامل کاراکترهای اضافی نیز باشد:

  • * - اشاره گر؛ قبل از نام؛
  • *const - نشانگر ثابت؛ قبل از نام؛
  • & - ارتباط دادن؛ قبل از نام؛
  • - آرایه؛ بعد از نام؛
  • () - تابع؛ بعد از نام

یک مقدار اولیه به شما اجازه می دهد تا یک مقدار را بلافاصله پس از اعلان متغیر برای آن تعریف کنید. مقداردهی اولیه با یک لفظ برابری (=) شروع می شود و سپس به تنظیم مقدار متغیر ادامه می دهد. به طور کلی، علامت مساوی در C++ یک عملیات انتساب را نشان می دهد. با کمک آن می توانید مقدار یک متغیر را تنظیم و تغییر دهید. ممکن است برای انواع مختلف متفاوت باشد.

مشخص کننده ویژگی های اضافی غیر از نوع را مشخص می کند. مشخص کننده const داده شده در مثال به شما امکان می دهد تغییرات بعدی در مقدار متغیر را ممنوع کنید. این گونه متغیرهای تغییرناپذیر ثابت یا ثابت نامیده می شوند.

اعلان یک ثابت بدون مقداردهی اولیه به دلایل منطقی کار نخواهد کرد:

Const int EMPTY_CONST; // خطا، متغیر ثابت اولیه نشده است const int EXAMPLE = 2; // ثابت با مقدار 2 EXAMPLE = 3; // خطا، تلاش برای اختصاص یک مقدار به یک متغیر ثابت

هنگام نام گذاری ثابت ها، مرسوم است که فقط از حروف بزرگ استفاده کنید و کلمات را با یک کاراکتر زیر خط جدا کنید.

انواع داده های پایه در C++

در حین بررسی هر نوع، خواننده نباید تعریف نوع داده را فراموش کند.

1. نوع عدد صحیح (کاراکتر، کوتاه (int)، int، طولانی (int)، طولانی طولانی)

از نام به راحتی می توان فهمید که مجموعه مقادیر از اعداد صحیح تشکیل شده است. همچنین مجموعه مقادیر هر یک از انواع فهرست شده می تواند دارای علامت یا بدون علامت باشد. تعداد عناصر موجود در یک مجموعه به اندازه حافظه مورد استفاده برای ذخیره مقدار آن نوع بستگی دارد. به عنوان مثال، برای متغیری از نوع char 1 بایت حافظه اختصاص داده شده است، بنابراین کل عناصر به صورت زیر خواهد بود:

  • 2 8N = 2 8 * 1 = 256، که در آن N اندازه حافظه در بایت برای ذخیره مقدار است.

در این مورد، محدوده اعداد صحیح موجود به شرح زیر است:

  • - برای کاراکتر بدون امضا
  • [-128..127] - برای کاراکتر امضا شده

به طور پیش فرض، یک متغیر عدد صحیح امضا شده در نظر گرفته می شود. برای اینکه در کد مشخص شود که یک متغیر باید بدون علامت باشد، یک ویژگی signed به نوع پایه در سمت چپ اضافه می‌شود، یعنی. بدون امضا:

مقادیر طولانی بدون علامت؛ // یک نوع بدون علامت عدد صحیح (طولانی) را مشخص می کند.

انواع ذکر شده فقط در اندازه حافظه مورد نیاز برای ذخیره سازی متفاوت است. از آنجایی که زبان C++ کاملاً وابسته به ماشین است، استاندارد زبان فقط شرایط زیر را تضمین می کند:

  • 1 = اندازه کاراکتر ≤ اندازه کوتاه ≤ اندازه int ≤ اندازه بلند.

به طور معمول اندازه انواع به شرح زیر است: char - 1، short - 2، int - 4، طولانی -8، طولانی طولانی - 8 بایت.

می توانید عملیات حسابی را با مقادیر از نوع عدد صحیح انجام دهید: +، -، *، /، %؛ عملیات مقایسه: ==، !=،<=, <, >، >=; عملیات بیت: &، |، xor،<<, >>.
اکثر عملیات مانند جمع، ضرب، تفریق و مقایسه به راحتی قابل درک هستند. گاهی اوقات، پس از انجام عملیات حسابی، ممکن است نتیجه خارج از محدوده مقادیر باشد. در این صورت برنامه خطا ایجاد می کند.
تقسیم عدد صحیح (/) قسمت صحیح یک عدد صحیح را بر دیگری تقسیم می کند. مثلا:

  • 6 / 4 = 1;
  • 2 / 5 = 0;
  • 8 / 2 = 4.

نماد درصد (%) عملیات تعیین باقیمانده تقسیم دو عدد صحیح را نشان می دهد:

  • 6 % 4 = 2;
  • 10 % 3 = 1.

درک عملیات های بیتی دشوارتر است: & (AND)، | (OR)، xor (انحصاری OR)،<< (побитовый сдвиг влево), >> (تغییر بیتی به راست).

عملیات بیت AND، OR و XOR عملیات منطقی مربوطه را برای هر بیت از اطلاعات اعمال می کنند:

  • 1 10 = 01 2
  • 3 10 = 11 2
  • 1 10 & 3 10 = 01 2 & 11 2 = 01 2
  • 1 10 | 3 10 = 01 2 | 11 2 = 11 2
  • 1 10 xor 3 10 = 01 2 xor 11 2 = 10 2

در پردازش تصویر، از 3 کانال برای رنگ استفاده می شود: قرمز، آبی و سبز - به علاوه شفافیت، که در یک متغیر int ذخیره می شوند، زیرا هر کانال دارای محدوده ای از مقادیر از 0 تا 255 است. در سیستم اعداد هگزادسیمال، مقدار مشخصی به صورت زیر نوشته می شود: 0x180013FF. سپس مقدار 18 16 مربوط به کانال قرمز، 00 16 - آبی، 13 16 - سبز، FF - کانال آلفا (شفافیت) است. برای انتخاب یک کانال خاص از چنین عدد صحیحی، به اصطلاح از کانال استفاده می شود. ماسک، که در آن موقعیت های مورد علاقه ما F 16 یا 1 2 هستند. یعنی برای برجسته کردن مقدار کانال آبی، باید از ماسک استفاده کنید. به صورت بیتی و:

Int blue_channel = 0x180013FF & 0x00FF0000;

پس از آن مقدار حاصل به تعداد بیت مورد نیاز به سمت راست منتقل می شود.

یک تغییر بیت یک عدد را با تعداد ارقام باینری که در سمت راست عملیات مشخص شده است به چپ یا راست تغییر می‌دهد. به عنوان مثال، عدد 39 برای نوع char به صورت باینری به صورت زیر نوشته می شود: 00100111. سپس:

Char binaryExample = 39; // 00100111 نتیجه کاراکتر = باینری مثال<< 2; // сдвигаем 2 бита влево, результат: 10011100

اگر متغیر از نوع بدون علامت باشد، نتیجه عدد 156 خواهد بود و برای متغیر علامت دار برابر با 100 است. توجه داشته باشید که برای انواع عدد صحیح علامت دار، یک واحد در مهم ترین بیت نمایش بیت، نشانه منفی بودن عدد است. در این مورد، یک مقدار به شکل باینری که از همه آنها تشکیل شده است با -1 مطابقت دارد. اگر 1 فقط در مهمترین رقم باشد و ارقام باقیمانده صفر باشند، چنین عددی حداقل مقدار را برای یک نوع خاص دارد: برای کاراکتر 128- است.

2. نوع نقطه شناور (شناور، دوگانه (شناور))

مجموعه مقادیر ممیز شناور زیرمجموعه ای از اعداد واقعی است، اما هر عدد واقعی به صورت باینری قابل نمایش نیست، که گاهی منجر به خطاهای احمقانه می شود:

مقدار شناور = 0.2; مقدار == ​​0.2; // خطا، مقدار در اینجا برابر با 0.2 نخواهد بود.

هنگام کار با متغیرهای ممیز شناور، برنامه نویس نباید از آزمون برابری یا نابرابری استفاده کند، در عوض، معمولاً از آزمون قرار گرفتن در یک بازه معین استفاده می شود:

مقدار - 0.2< 1e-6; // ok, подбирать интервал тоже нужно осторожно

علاوه بر عملیات مقایسه، نوع ممیز شناور از 4 عملیات حسابی پشتیبانی می کند که به طور کامل با عملیات ریاضی با اعداد واقعی مطابقت دارد.

3. نوع بولی (منطقی) (bool)

فقط از دو مقدار تشکیل شده است: true (true) و false (false). برای کار با متغیرهایی از این نوع، از عملیات منطقی استفاده می شود: ! (نه)، == (برابری)، != (نابرابری)، && (و منطقی)، || (OR منطقی). نتیجه هر عملیات را می توان در جدول حقیقت مربوطه یافت. مثلا:

X Y XOR0 0 0 0 1 1 1 0 1 1 1 0

4. نوع کاراکتر (char، wchar_t)

نوع کاراکتر نه تنها یک نوع عدد صحیح است (معمولاً به این نوع بایت گفته می شود)، بلکه یک نوع کاراکتر نیز هست که شماره کاراکتر جدول را به عنوان یک کاراکتر ASCII ذخیره می کند. به عنوان مثال، کد 0x41 مربوط به کاراکتر 'A'، و 0x71 - 't' است.

گاهی اوقات لازم است از کاراکترهایی استفاده شود که در جداول ASCII ثابت نیستند و بنابراین برای ذخیره سازی به بیش از 1 بایت نیاز دارند. یک شخصیت گسترده برای آنها وجود دارد (wchar_t).

5.1. آرایه ها

آرایه ها به شما امکان می دهند مجموعه ای متوالی از عناصر از یک نوع را ذخیره کنید. یک آرایه به عنوان یک بلوک پیوسته در حافظه ذخیره می شود، بنابراین نمی توانید یک آرایه را بدون تعیین اندازه آن اعلام کنید. برای اعلام یک آرایه، براکت های مربع () بعد از نام متغیر که اندازه آن را نشان می دهد، نوشته می شود. مثلا:

Int myArray; // آرایه ای از 5 عنصر از نوع عدد صحیح

برای مقداردهی اولیه یک آرایه، مقادیر در پرانتزهای فرفری فهرست می شوند. شما می توانید از این طریق فقط در زمان اعلام متغیر مقداردهی اولیه کنید. به هر حال، در این مورد لازم نیست اندازه آرایه را مشخص کنید:

شانس بین المللی = (1، 3، 7، 9، 11); // آرایه با 5 مقدار مقداردهی اولیه می شود

برای دسترسی به یک مقدار خاص در یک آرایه (عنصر آرایه)، از عملیات دسترسی به فهرست () استفاده کنید که شماره عنصر را نشان می دهد (اعداد از 0 شروع می شوند). مثلا:

شانس // دسترسی به اولین عنصر آرایه. شانس 1 را برمی گرداند. // دسترسی به عنصر سوم. مقدار 7 شانس = 13 را برمی گرداند. // یک مقدار جدید به عنصر پنجم شانس آرایه اختصاص دهید. // خطای دسترسی

5.3. رشته های

برای نوشتن یک رشته، برنامه نویسان از این ایده استفاده می کنند که یک رشته یک سری (آرایه) متوالی از کاراکترها است. برای شناسایی انتهای یک خط، از کاراکتر انتهای خط ویژه استفاده کنید: '\0'. این کاراکترهای خاص که از یک بک اسلش و یک کاراکتر شناسایی تشکیل شده اند، کاراکترهای کنترل یا فرار نامیده می شوند. همچنین، برای مثال، '\n' - ابتدای یک خط جدید، '\t' - جدول وجود دارد. برای نوشتن یک بک اسلش در یک رشته، از escape استفاده می شود - یک اسلش دیگر قبل از خود علامت قرار می گیرد: '\'. از Escape برای نوشتن گیومه نیز استفاده می شود.

بیایید یک متغیر رشته ایجاد کنیم:

Char textExample = ('T', 'e', ​​'s', 't', '\0'); // رشته "Test" نوشته شده است

یک نماد ساده برای مقداردهی اولیه رشته وجود دارد:

Char textExample = "تست"; // آخرین کاراکتر نوشته نشده است، اما اندازه آن هنوز 5 است

بدون پرداختن به جزئیات، در اینجا یک نوع داده مفید دیگر وجود دارد - رشته. رشته های
برای مثال می توان این نوع را اضافه کرد:

رشته hello = "سلام"; نام رشته = "Max!"; رشته hello_name = سلام + نام; // رشته "Hello, Max!"

6. پیوند

Int a = 2; // متغیر "a" به مقدار 2 اشاره می کند int &b = a; // متغیر "b" به همان مکان "a" اشاره می کند b = 4; // با تغییر مقدار b، برنامه نویس مقدار a را تغییر می دهد. اکنون a = 4 int & c = 4; // خطا، شما نمی توانید این کار را انجام دهید زیرا نمی توان به مرجع یک مقدار اختصاص داد

7. فهرست

برای درک این نوع داده، باید به یاد داشته باشید که بسیاری از مقادیر این نوع آدرس سلول های حافظه هستند که داده ها از آنجا شروع می شوند. اشاره گر همچنین از عملیات جمع (+)، تفریق (-) و عدم ارجاع (*) پشتیبانی می کند.

آدرس‌های 0x0 به این معنی است که نشانگر خالی است، یعنی. به هیچ داده ای اشاره نمی کند. این آدرس به معنای واقعی کلمه خود را دارد - NULL:

Int *nullPtr = NULL; // نشانگر تهی

افزودن و تفریق یک آدرس با یک عدد صحیح یا آدرس دیگری اجازه می دهد
در حافظه موجود در برنامه حرکت کنید.

عملیات بازیابی داده ها که از یک آدرس ذخیره شده در یک اشاره گر شروع می شود، ارجاع دهی (*) نامیده می شود. این برنامه تعداد مورد نیاز سلول های حافظه را می خواند و مقدار ذخیره شده در حافظه را برمی گرداند.

Int valueInMemory = 2; // یک متغیر از نوع عدد صحیح تنظیم کنید int *somePtr = // آدرس متغیر را کپی کنید، در اینجا & - آدرس متغیر somePtr را برمی گرداند. // آدرس سلول حافظه، به عنوان مثال، 0x2F *somePtr; // مقدار در 4 سلول ذخیره می شود: 0x2F، 0x30، 0x31 و 0x32

عملیات تخصیص که از نظر نحوی همانند عملیات کپی است، برای اشاره گرها در دسترس نیست. به عبارت دیگر، شما می توانید آدرس یک اشاره گر دیگر یا آدرس یک متغیر را کپی کنید، اما نمی توانید مقدار آدرس را خودتان تعیین کنید.

خود اشاره گر مانند مقادیر متغیرهای انواع دیگر در حافظه ذخیره می شود و 4 بایت را اشغال می کند، بنابراین می توانید یک اشاره گر به یک اشاره گر ایجاد کنید.

8. نقل و انتقالات

Enumerations تنها نوع پایه ای است که توسط برنامه نویس تعریف شده است. به طور کلی، شمارش مجموعه‌ای مرتب از ثابت‌های اعداد صحیح نام‌گذاری‌شده است که نام شمارش نوع پایه است.

رنگ Enum (قرمز، آبی، سبز)؛

به طور پیش فرض، قرمز = 0، آبی = 1، سبز = 2. بنابراین، مقادیر را می توان با یکدیگر مقایسه کرد، به عنوان مثال. قرمز< BLUE < GREEN. Программист при объявлении перечисления может самостоятельно задать значения каждой из констант:

دسترسی Enum (READ = 1، WRITE = 2، EXEC = 4)؛

اغلب استفاده از شمارش هایی که مقادیر آنها توان دو است راحت است، زیرا در نمایش دودویی، عددی که توان 2 باشد از 1 و صفر تشکیل خواهد شد. مثلا:

8 10 = 00001000 2

نتیجه جمع کردن این اعداد با هم همیشه به وضوح نشان می دهد که کدام اعداد اضافه شده اند:

37 10 = 00100101 2 = 00000001 2 + 00000100 2 + 00100000 2 = 1 10 + 4 10 + 32 10

خالی

از نظر نحوی، نوع void متعلق به انواع بنیادی است، اما تنها می تواند به عنوان بخشی از انواع پیچیده تر استفاده شود، زیرا هیچ شیئی از نوع void وجود ندارد. به طور معمول، این نوع برای نشان دادن اینکه یک تابع مقدار بازگشتی ندارد یا به عنوان نوع پایه اشاره گر به اشیاء از انواع تعریف نشده استفاده می شود:

شیء خالی؛ // خطا، هیچ شیئی از نوع void void // خطا وجود ندارد، هیچ ارجاعی به void void *ptr وجود ندارد. // خوب، یک اشاره گر را به یک نوع ناشناخته ذخیره کنید

اغلب ما به طور خاص از void استفاده می کنیم تا نشان دهیم یک تابع هیچ مقداری را بر نمی گرداند. اشاره گر نوع خالی زمانی استفاده می شود که برنامه نویس مسئولیت کامل یکپارچگی حافظه و ریخته گری نوع صحیح را بر عهده بگیرد.

قالب

اغلب لازم است که مقدار یک متغیر از یک نوع را به دیگری منتقل کنیم. در موردی که مجموعه مقادیر نوع اصلی زیرمجموعه ای از نوع بزرگتر باشد (مثلا int زیرمجموعه long و long دو برابر است)، کامپایلر قادر است به طور ضمنی ( به طور ضمنی) نوع مقدار را تغییر دهید.

عدد صحیح = 2; float floating = عدد صحیح; // شناور = 2.0

یک ریخته گری از نوع معکوس با از دست دادن اطلاعات انجام می شود، بنابراین فقط قسمت صحیح عدد ممیز شناور باقی می ماند، قسمت کسری از بین می رود.

امکان تبدیل نوع صریح وجود دارد؛ برای این منظور، در سمت چپ متغیر یا هر مقداری از نوع اصلی، نوعی را که ریخته گری به آن انجام می شود در پرانتز بنویسید:

مقدار int = (int) 2.5;

عملیات واحد و باینری

عملیاتی که قبلا انجام دادیم باینری نامیده می شود: در سمت چپ و راست نماد عملیات مقادیر یا متغیرهایی وجود دارد، به عنوان مثال، 2 + 3. علاوه بر عملیات باینری، زبان های برنامه نویسی همچنین از عملیات یکنواختی استفاده می کنند که برای متغیرها اعمال می شود. . آنها می توانند در سمت چپ یا راست یک متغیر قرار گیرند؛ چندین عملیات از این قبیل قبلاً با آن مواجه شده اند - عملیات عدم ارجاع (*) و گرفتن آدرس یک متغیر (&) یکسان هستند. عملگرهای "++" و "-" به ترتیب مقدار یک متغیر عدد صحیح را 1 افزایش و کاهش می دهند و می توانند در سمت چپ یا راست متغیر نوشته شوند.

C++ همچنین از نماد مختصر برای عملیات باینری در مواردی استفاده می‌کند که سمت چپ و راست عبارت حاوی متغیر مشابهی باشد، یعنی. برخی از عملیات بر روی مقدار یک متغیر انجام می شود و نتیجه عملیات در همان متغیر ذخیره می شود:

A += 2; // مشابه a = a + 2; b /= 5; // مانند b = b / 5; c &= 3; // مانند c = c & 3;

برچسب ها: متغیرهای C char, int, unsigned, long, long long, float, double, long double, long float, محدوده لغوی. اعلام متغیرها منطقه دید. مقداردهی اولیه متغیرها نام متغیرها فرم نمایی.

متغیرها

از متغیرها برای ذخیره مقادیر (sic!) استفاده می شود. یک متغیر با یک نوع و یک نام مشخص می شود. بیایید با نام شروع کنیم. در C، یک متغیر می تواند با یک خط زیر یا یک حرف شروع شود، اما نه با یک عدد. متغیر می تواند شامل کاراکترهای انگلیسی، اعداد و زیرخط باشد. متغیر نباید با کلمات کلیدی مطابقت داشته باشد (اینها کلمات خاصی هستند که به عنوان ساختارهای کنترلی، برای تعریف انواع و غیره استفاده می شوند)

خودکار دو برابر بین المللی ساخت
زنگ تفريح دیگر طولانی تعویض
ثبت نام typedef کاراکتر خارجی
برگشت خالی مورد شناور
بدون امضا پیش فرض برای امضاء شده
اتحاد. اتصال انجام دادن اگر اندازه
فرار ادامه هید enum کوتاه
در حالی که خطی
و همچنین تعدادی از کلمات دیگر مخصوص این نسخه کامپایلر، برای مثال دور, نزدیک, کوچک, بزرگ, asm, asm_و غیره.

به عنوان مثال، شناسه های صحیح
a, _, _1_, Sarkasm, a_long_variable, aLongVariable, var19, defaultX, char_type
بي وفا
1a، $value، a-long-value، short

C یک زبان حساس به حروف کوچک و بزرگ است.متغیرهایی با نام a و A یا end و END یا perfectDark و PerfectDarK متغیرهای مختلفی هستند.

انواع متغیر

نوع متغیر تعیین می کند

  • 1) اندازه متغیر بر حسب بایت (چند بایت حافظه را رایانه برای ذخیره مقدار اختصاص می دهد)
  • 2) نمایش یک متغیر در حافظه (چگونه بیت ها در ناحیه حافظه اختصاص داده شده به صورت باینری قرار می گیرند).
چندین نوع اصلی در C وجود دارد. بیایید آنها را به دو گروه تقسیم کنیم - اعداد صحیح و اعداد ممیز شناور.

کل

  • کاراکتر- اندازه 1 بایت همیشه! این باید یادآوری شود.
  • کوتاه- اندازه 2 بایت
  • بین المللی- اندازه 4 بایت
  • طولانی- اندازه 4 بایت
  • طولانی طولانی- اندازه 8 بایت
در اینجا باید تذکر داد. اندازه متغیرها در C به صراحت به عنوان اندازه در بایت تعریف نشده است. استاندارد فقط این را بیان می کند

کاراکتر<= short <= int <= long <= long long

مقادیر بالا مختص کامپایلر VC2012 در یک ماشین 32 بیتی است. بنابراین اگر برنامه شما به اندازه یک متغیر بستگی دارد، برای پیدا کردن اندازه آن زمان بگذارید.

حالا بیایید حداکثر و حداقل عددی را که یک متغیر از هر نوع می تواند ذخیره کند، تعیین کنیم. اعداد می توانند مثبت یا منفی باشند. اعداد منفی از یک بیت برای ذخیره علامت استفاده می کنند. گاهی علامت لازم است (مثلاً حساب بانکی، دما، مختصات و غیره را ذخیره می کنیم) و گاهی لازم نیست (وزن، اندازه آرایه، سن فرد و غیره). برای این کار، C از اصلاح کننده نوع علامت دار و بدون علامت استفاده می کند. char unsigned - همه 8 بیت برای عدد، در مجموع مجموعه ای از اعداد از 00000000 تا 11111111 را به صورت باینری داریم، یعنی از 0 تا 255 char علامت دار از -128 تا 128. در C، متغیرها به طور پیش فرض امضا می شوند. بنابراین نوشتن char و char امضا شده معادل هستند.

Tab. 1 اندازه انواع اعداد صحیح در c.
تایپ کنید اندازه، بایت حداقل ارزش حداکثر مقدار
کاراکتر بدون امضا 1 0 255
کاراکتر امضا شده
(کاراکتر)
1 -128 127
کوتاه بدون امضا 2 0 65535
کوتاه امضا کرد
(کوتاه)
2 -32768 32767
بدون امضا
(بدون امضا)
4 0 4294967296
امضا شده
(int)
4 -2147483648 2147483647
بدون امضا طولانی 4 0 4294967296
طولانی امضا کرد
(طولانی)
4 -2147483648 2147483647
طولانی بدون امضا 8 0 18446744073709551615
امضای طولانی مدت
(طولانی طولانی)
8 -9223372036854775808 9223372036854775807

اندازه

یک عملگر در C وجود دارد که به شما امکان می دهد اندازه یک متغیر را بر حسب بایت بدست آورید. sizeof متغیر، یا sizeof(متغیر) یا sizeof(نوع). این یک عملگر است زیرا تابع هیچ راهی برای به دست آوردن اطلاعات اندازه نوع در طول اجرای برنامه ندارد. بیایید یک برنامه کوچک بنویسیم تا اندازه متغیرها را بررسی کنیم.

#عبارتند از #عبارتند از int main() (char c; short s; int i; long l; long long L; //call sizeof به عنوان "function" printf("sizeof(char) = %d\n", sizeof(c)); printf ("sizeof(short) = %d\n", sizeof(s)); printf("sizeof(int) = %d\n", sizeof(i)); printf("sizeof(long) = %d \ n", sizeof(l)); printf("sizeof(long long) = %d\n", sizeof(L)); //به عنوان عملگر تماس بگیرید printf("sizeof(char) = %d\n"، sizeof c); printf("sizeof(short) = %d\n"، sizeof s); printf("sizeof(int) = %d\n"، sizeof i); printf("sizeof(long) = %d \ n"، sizeof l)؛ printf("sizeof(long long) = %d\n"، sizeof L); _getch(); )

(من فکر می کنم واضح است که متغیرها می توانند هر نام معتبری داشته باشند). این برنامه می توانست ساده تر نوشته شود

#عبارتند از #عبارتند از int main() ( printf("sizeof(char) = %d\n", sizeof(char)); printf("sizeof(short) = %d\n", sizeof(short)); printf("sizeof( int) = %d\n"، sizeof(int))؛ printf("sizeof(long) = %d\n"، sizeof(long)); printf("sizeof(long long) = %d\n"، sizeof(long long)); //شما نمی توانید sizeof را به عنوان یک عملگر برای نام نوع فراخوانی کنید //sizeof int - خطای کامپایل _getch(); )

در C، یک نوع یکسان می تواند چندین نام داشته باشد
کوتاه === کوتاه داخلی
طولانی === طولانی بین
طولانی طولانی === طولانی طولانی int
unsigned int === بدون امضا

انواع نقطه شناور

  • شناور- 4 بایت،
  • شناور طولانی- 8 بایت
  • دو برابر- 8 بایت
  • دوبل بلند- 8 بایت
در اینجا نیز مقادیر VC2012 با توجه به اندازه استاندارد انواع شناور آمده است<= long float <= double <= long double все числа с плавающей точкой - со знаком.

سرریز متغیر

C بر سرریز متغیر نظارت نمی کند. این بدان معنی است که با افزایش مداوم مقدار مثلاً متغیری از نوع int، در نهایت مقدار را "بازنشانی" خواهیم کرد.

#عبارتند از #عبارتند از void main() ( بدون علامت a = 4294967295؛ int b = 2147483647؛ //نوع بدون علامت سرریز printf("%u\n", a); a += 1؛ printf("%u"، a); //سرریز نوع امضا شده printf("%d\n"، b); b += 1; printf("%d"، b); getch();

به طور کلی، رفتار زمانی که یک متغیر سرریز می شود، فقط برای نوع تعریف می شود بدون امضا: یک عدد صحیح بدون علامت مقدار را بازنشانی می کند. برای انواع دیگر، هر اتفاقی ممکن است بیفتد، و اگر نیاز به مشاهده سرریز دارید، آن را به صورت دستی با بررسی آرگومان ها انجام دهید، یا بسته به معماری کامپایلر و پردازنده از روش های دیگر استفاده کنید.

تعیین نوع Postfix

هنگام کار با اعداد، می توانید از حروف در انتهای یک عدد برای نشان دادن صریح نوع آن استفاده کنید.

  • 11 - عدد int
  • 10u - بدون امضا
  • 22 لیتر یا 22 لیتر - طول
  • 3890ll یا 3890LL - طولانی (همچنین lL یا Ll)
  • 80.0f یا 80.f یا 80.0F - شناور (یک نقطه اعشار باید در ورودی وجود داشته باشد)
  • 3.0 - دو عدد
نماد علمی نیز به طور پیش فرض نشان دهنده یک دوبل است. #عبارتند از #عبارتند از int main() ( printf("sizeof(int) = %d\n", sizeof(10)); printf("sizeof(unigned) = %d\n", sizeof(10u)); printf("sizeof( long) = %d\n"، sizeof(10l)); printf("sizeof(long long) = %d\n"، sizeof(10ll)); printf("sizeof(float) = %d\n"، sizeof(10.f)); printf("sizeof(double) = %d\n", sizeof(10.)); printf("sizeof(double) = %d\n", sizeof(10e2)); getch ();)

کد زیر، با این حال، خطا ایجاد نمی کند زیرا یک تبدیل نوع ضمنی وجود دارد

Int a = 10u; دو برابر g = 3.f;

فرمت هگزادسیمال و اکتال

هنگام کار با اعداد، می توانید از فرمت های هگزادسیمال و اکتال استفاده کنید. اعداد در سیستم اعداد هگزادسیمال با 0x و در سیستم اعداد اکتالی با صفر شروع می شوند. بر این اساس، اگر عددی از صفر شروع شود، نباید دارای ارقام بالاتر از 7 باشد:

#عبارتند از #عبارتند از void main() (int x = 0xFF; int y = 077; printf("hex x = %x\n", x); printf("dec x = %d\n"، x); printf("oct x = %o\n، x); printf("oct y = %o\n"، y); printf("dec y = %d\n"، y); printf("هگز y = %x"، y)؛ getch();)

نماد علمی اعداد

شکل نمایی نمایش یک عدد، نمایش یک عدد به شکل M e ± p است که در آن م- مانتیس شماره، پ- توان ده در این حالت مانتیس باید قبل از نقطه اعشار یک علامت غیر صفر داشته باشد.
به عنوان مثال 1.25 === 1.25e0، 123.5 === 1.235e2، 0.0002341 === 2.341e-4، و غیره.
نمایش های 3.2435e7 معادل 3.2435e+7 هستند
بازنمایی دیگری ("مهندسی") وجود دارد که در آن مدرک باید مضرب سه باشد. به عنوان مثال 1.25 === 1.25e0، 123.5 === 123.5e0، 0.0002341 === 234.1e-6، 0.25873256 === 258.73256e-3، و غیره.

اعلان متغیرها

در C، متغیرها همیشه در ابتدای یک بلوک اعلان می شوند (بلوک بخشی از کد است که توسط پرانتزهای فرفری محدود شده است)

<возвращаемый тип> <имя функции> (<тип> <аргумент>[, <тип> <аргумент>]) (اعلام متغیرها، هر چیز دیگری)

هنگام اعلان یک متغیر، نوع و نام آن نوشته می شود.

Int a; پارامتر دوگانه؛

شما می توانید چندین متغیر از یک نوع را با جدا کردن نام ها با کاما اعلام کنید

بلند بلند arg1، arg2، arg3;

مثلا

#عبارتند از #عبارتند از int main() (int a = 10; int b; while (a>0) (int z = a*a; b += z; ) )

متغیرها در اینجا اعلام می شوند آو بداخل یک تابع اصلی، و متغیر zداخل بدنه حلقه کد زیر باعث خطای کامپایل می شود

Int main() (int i; i = 10; int j;)

دلیل آن این است که اعلان متغیر بعد از عملگر انتساب می آید. هنگام اعلان متغیرها، می توانید بلافاصله آنها را مقداردهی اولیه کنید.
int i = 0;
با این حال، مقداردهی اولیه هنگام اعلان یک متغیر، یک دستور جداگانه در نظر گرفته نمی شود، بنابراین کد زیر کار خواهد کرد

Int main() (int i = 10; int j; )

مقدار اولیه متغیر

بسیار مهم است که به یاد داشته باشید که متغیرهای C مانند بسیاری از زبان های برنامه نویسی به طور پیش فرض صفر اولیه نمی شوند. پس از اعلان یک متغیر، "زباله" را ذخیره می کند - یک مقدار تصادفی که در ناحیه حافظه ای که برای متغیر اختصاص داده شده باقی می ماند. این اول از همه به دلیل بهینه سازی برنامه است: اگر نیازی به مقداردهی اولیه نیست، پس نیازی به هدر دادن منابع برای نوشتن صفر نیست (توجه داشته باشید: متغیرهای جهانی با صفر مقداردهی می شوند، چرا اینطور است، این مقاله را بخوانید) .

#عبارتند از #عبارتند از int main() (int i; printf("%d"، i); getch(); )

اگر این برنامه را روی VC اجرا کنید، در حین اجرا یک هشدار ظاهر می شود
خطای بررسی زمان اجرا شماره 3 - متغیر "i" بدون مقداردهی اولیه استفاده می شود.
اگر روی "ادامه" کلیک کنید، برنامه خروجی "زباله" را خواهد داشت. در بسیاری از کامپایلرهای دیگر هنگام اجرای برنامه هیچ هشداری وجود نخواهد داشت.

دامنه متغیر

متغیرها می توانند محلی (اعلام شده در یک تابع) یا سراسری باشند. یک متغیر سراسری برای همه توابع اعلام شده در این فایل قابل مشاهده است. یک متغیر محلی با محدوده آن محدود می شود. وقتی می گویم متغیر «در یک مکان قابل مشاهده است» یعنی در آن مکان تعریف شده و قابل استفاده است. به عنوان مثال، برنامه ای را در نظر بگیرید که دارای یک متغیر سراسری است

#عبارتند از #عبارتند از int global = 100; void foo() ( printf("foo: %d\n"، global); ) void bar(int global) (printf("bar: %d\n", global); ) int main() (foo() ; bar(333)؛ getch(); )

نمایش داده خواهد شد
فو: 100
نوار: 333
در اینجا یک متغیر جهانی وجود دارد جهانی استقابل مشاهده برای همه توابع اما آرگومان تابع متغیر سراسری را بازنویسی می کند، بنابراین هنگام عبور آرگومان 333، مقدار محلی 333 چاپ می شود.
در اینجا یک مثال دیگر است

#عبارتند از #عبارتند از int global = 100; int main() ( int global = 555; printf("%d\n"، global); getch(); )

خروجی برنامه 555 خواهد بود. درست مانند مورد قبلی، متغیر محلی "مهم تر" است. برای مثال، متغیری که در یک محدوده خاص اعلام شده است، خارج از آن قابل مشاهده نیست

#عبارتند از #عبارتند از int global = 100; int main() (int x = 10; ( int y = 30; printf("%d"، x); ) printf("%d"، y); )

این مثال به دلیل متغیر کامپایل نخواهد شد yفقط در بلوک خودش وجود دارد.
در اینجا مثال دیگری وجود دارد که متغیرهای اعلام شده در داخل یک بلوک با یکدیگر همپوشانی دارند

#عبارتند از #عبارتند از int global = 100; int main() (int x = 10; ( int x = 20; (int x = 30; printf("%d\n", x); ) printf("%d\n"، x); ) printf( "%d\n"، x); getch(); )

برنامه چاپ خواهد شد
30
20
10
باید از متغیرهای جهانی اجتناب کرد. شما می توانید این را اغلب بشنوید. بیایید سعی کنیم دلیل آن را بفهمیم. در پروژه های ساده شما، متغیرهای سراسری کاملاً عادی به نظر می رسند. اما تصور کنید که شما برنامه ای دارید که

  • 1) توسط چندین نفر توسعه یافته و شامل صدها هزار خط کد است
  • 2) در چندین رشته کار می کند

ابتدا، یک متغیر سراسری، اگر برای همه قابل مشاهده باشد، می تواند توسط هر بخشی از برنامه تغییر کند. شما یک متغیر سراسری را تغییر می‌دهید، می‌خواهید آن را بنویسید، و بخش دیگری از برنامه قبلاً آن را با مقدار دیگری بازنویسی کرده است (در واقع، این یک کلاس کامل از مشکلات است که در یک محیط چند رشته‌ای ایجاد می‌شود). ثانیاً، با اندازه پروژه های بزرگ، نمی توان ردیابی اینکه چه کسی و چه زمانی متغیرهای جهانی را ایجاد کرده است. مثال‌های بالا نشان می‌دهند که چگونه متغیرها می‌توانند روی یکدیگر همپوشانی داشته باشند و همین امر در یک پروژه بزرگ اتفاق می‌افتد.

مطمئناً موقعیت‌هایی وجود دارد که متغیرهای سراسری یک برنامه را ساده می‌کنند، اما این موقعیت‌ها اغلب اتفاق نمی‌افتند و در تکالیف شما اتفاق نمی‌افتند، بنابراین متغیرهای جهانی ایجاد نکنید!
متغیرها نه تنها می توانند عدد صحیح و ممیز شناور باشند. انواع بسیار دیگری نیز وجود دارد که در ادامه به بررسی آنها خواهیم پرداخت.

در این بخش انواع داده های اصلی در C++ مورد بحث قرار می گیرد؛ این نوع داده ها داخلی نیز نامیده می شوند. زبان برنامه نویسی C++ یک زبان برنامه نویسی قابل توسعه است. اصطلاح توسعه پذیر به این معنی است که علاوه بر انواع داده های داخلی، می توانید انواع داده های خود را ایجاد کنید. به همین دلیل است که تعداد زیادی از انواع داده در C++ وجود دارد. ما فقط موارد اصلی را مطالعه خواهیم کرد.

جدول 1 - انواع داده C++
تایپ کنید بایت محدوده مقادیر پذیرفته شده

نوع داده عدد صحیح (بولی)

بوول 1 0 / 255

نوع داده عدد صحیح (نویسه).

کاراکتر 1 0 / 255

انواع داده های عدد صحیح

داخلی کوتاه 2 -32 768 / 32 767
بدون امضا کوتاه 2 0 / 65 535
بین المللی 4
بدون امضا 4 0 / 4 294 967 295
طولانی بین المللی 4 -2 147 483 648 / 2 147 483 647
بدون امضا طولانی int 4 0 / 4 294 967 295

انواع داده های ممیز شناور

شناور 4 -2 147 483 648.0 / 2 147 483 647.0
شناور طولانی 8
دو برابر 8 -9 223 372 036 854 775 808 .0 / 9 223 372 036 854 775 807.0

جدول 1 انواع داده های اصلی را در C++ نشان می دهد. کل جدول به سه ستون تقسیم شده است. ستون اول یک کلمه رزرو شده را نشان می دهد که هر کدام نوع داده خود را تعیین می کند. ستون دوم تعداد بایت های اختصاص داده شده برای یک متغیر با نوع داده مربوطه را نشان می دهد. ستون سوم محدوده مقادیر قابل قبول را نشان می دهد. لطفاً توجه داشته باشید که در جدول همه انواع داده ها از کوچکترین به بزرگترین مرتب شده اند.

نوع داده bool

اولین مورد در جدول نوع داده bool است یک نوع داده عدد صحیح، زیرا محدوده مقادیر معتبر اعداد صحیح از 0 تا 255 است. اما همانطور که قبلاً متوجه شده اید، در داخل پرانتز می گوید نوع داده منطقی، و این نیز درست است. زیرا بوولمنحصراً برای ذخیره نتایج عبارات بولی استفاده می شود. یک عبارت بولی می تواند یکی از دو نتیجه را داشته باشد: درست یا نادرست. درست - اگر عبارت منطقی درست باشد، نادرست است - اگر عبارت منطقی نادرست باشد.

اما از آنجایی که محدوده مقادیر معتبر نوع داده bool از 0 تا 255 است، لازم بود به نحوی این محدوده با ثابت های منطقی true و false تعریف شده در زبان برنامه نویسی مطابقت داده شود. بنابراین، ثابت true معادل تمام اعداد از 1 تا 255 است، در حالی که ثابت false تنها معادل یک عدد صحیح است - 0. برنامه ای را با استفاده از نوع داده bool در نظر بگیرید.

// data_type.cpp: نقطه ورودی برنامه کنسول را تعریف می کند. #include "stdafx.h" #include با استفاده از namespace std. int main(int argc, char* argv) ( bool boolean = 25; // متغیر از نوع bool به نام boolean if (بولی) // شرط عملگر if cout<< "true = " << boolean << endl; // выполнится в случае истинности условия else cout << "false = " << boolean << endl; // выполнится в случае, если условие ложно system("pause"); return 0; }

که در خط 9متغیر نوع اعلام شدهبوول ، که به 25 مقداردهی اولیه می شود. از لحاظ نظری، پس ازخطوط 9، در یک متغیر بولی باید شامل عدد 25 باشد، اما در واقع این متغیر حاوی عدد 1 است. همانطور که گفتم، عدد 0 یک مقدار نادرست است، عدد 1 یک مقدار واقعی است. نکته این است که در یک متغیر مانندبوول می تواند شامل دو مقدار باشد - 0 (نادرست) یا 1 (درست). در حالی که تحت نوع دادهبوول یک بایت کامل اختصاص داده می شود، به این معنی که یک متغیر از نوعبوول می تواند شامل اعداد از 0 تا 255 باشد. برای تعیین مقادیر false و true فقط دو مقدار 0 و 1 مورد نیاز است. این سوال پیش می آید: "253 مقدار دیگر برای چیست؟"

بر اساس این وضعیت، ما پذیرفتیم که از اعداد 2 تا 255 به عنوان معادل عدد 1، یعنی حقیقت استفاده کنیم. دقیقاً به همین دلیل است که متغیر بولی شامل عدد 25 است نه 1. In خطوط 10 -13اعلام کرد که کنترل را به اپراتور در منتقل می کند خط 11، اگر شرط درست باشد و اپراتور وارد شود خط 13، اگر شرط نادرست باشد. نتیجه برنامه در شکل 1 نشان داده شده است.

True = 1 برای ادامه، هر کلیدی را فشار دهید. . .

شکل 1 - نوع داده bool

نوع داده char

نوع داده char یک نوع داده عدد صحیح است که برای نمایش کاراکترها استفاده می شود. یعنی هر کاراکتر مربوط به عدد خاصی از محدوده است. به نوع داده char، نوع داده کاراکتر نیز گفته می شود، زیرا نمایش گرافیکی کاراکترها در C++ به لطف char امکان پذیر است. برای نمایش کاراکترها در C++، نوع داده char یک بایت اختصاص می‌یابد، یک بایت حاوی 8 بیت است، سپس دو تا را به توان 8 افزایش می‌دهیم و مقدار 256 را می‌گیریم - تعداد کاراکترهایی که می‌توان رمزگذاری کرد. بنابراین، با استفاده از نوع داده char، می توانید هر یک از 256 کاراکتر را نمایش دهید. همه کاراکترهای کدگذاری شده در نمایش داده می شوند.

ASCII (از کد استاندارد انگلیسی برای تبادل اطلاعات) - کد استاندارد آمریکایی برای تبادل اطلاعات.

برنامه ای را با استفاده از نوع داده char در نظر بگیرید.

// symbols.cpp: نقطه ورودی برنامه کنسول را تعریف می کند. #include "stdafx.h" #include با استفاده از namespace std. int main(int argc, char* argv) ( char نماد = "a"؛ // اعلان یک متغیر از نوع char و مقداردهی اولیه آن با نماد "a" cout<< "symbol = " << symbol << endl; // печать символа, содержащегося в переменной symbol char string = "сайт"; // объявление символьного массива (строки) cout << "string = " << string << endl; // печать строки system("pause"); return 0; }

بنابراین، در خط 9متغیری به نامسمبل ، مقدار نماد به آن اختصاص داده شده است"آ" ( کد اسکی). که در خط 10اپراتور cout کاراکتر موجود در متغیر را چاپ می کندسمبل که در خط 11یک آرایه رشته ای با نام اعلام کردرشته ، و اندازه آرایه به طور ضمنی مشخص شده است. یک رشته در یک آرایه رشته ای ذخیره می شود"سایت اینترنتی" . لطفاً توجه داشته باشید که وقتی نماد را در متغیری مانند ذخیره کردیمکاراکتر ، سپس بعد از علامت مساوی، نقل قول های تکی که نماد را در آن نوشتیم قرار می دهیم. هنگامی که یک آرایه رشته ای را با یک رشته خاص مقداردهی می کنیم، پس از علامت مساوی که در آن رشته خاصی نوشته می شود، کوتیشن های دوگانه قرار می گیرند. مانند یک کاراکتر معمولی، رشته ها با استفاده از عملگر خروجی می شوندکوت، خط 12. نتیجه برنامه در شکل 2 نشان داده شده است.

نماد = رشته = سایت برای ادامه، هر کلیدی را فشار دهید. . .

شکل 2 - نوع داده char

انواع داده های عدد صحیح

انواع داده های عدد صحیح برای نمایش اعداد استفاده می شود. شش مورد از آنها در جدول 1 وجود دارد: int کوتاه، کوتاه بدون علامت، int، int بدون علامت، طولانی int، بدون علامت طولانی int . همه آنها اندازه حافظه و محدوده مقادیر پذیرفته شده خود را دارند. بسته به کامپایلر، اندازه حافظه اشغال شده و محدوده مقادیر پذیرفته شده ممکن است متفاوت باشد. در جدول 1، تمام محدوده مقادیر پذیرفته شده و اندازه های حافظه اشغال شده برای کامپایلر MVS2010 گرفته شده است. علاوه بر این، تمام انواع داده ها در جدول 1 به ترتیب افزایش اندازه حافظه اشغال شده و محدوده مقادیر پذیرفته شده مرتب شده اند. محدوده مقادیر پذیرفته شده، به هر شکلی، به اندازه حافظه اشغال شده بستگی دارد. بر این اساس، هرچه اندازه حافظه اشغال شده بزرگتر باشد، دامنه مقادیر پذیرفته شده بیشتر است. همچنین، اگر نوع داده با پیشوند بدون علامت اعلام شود، محدوده مقادیر پذیرفته شده تغییر می کند. پیشوند بدون علامت به این معنی است که نوع داده نمی تواند مقادیر امضا شده را ذخیره کند، سپس دامنه مقادیر مثبت دو برابر می شود، به عنوان مثال، نوع داده کوتاه int و کوتاه بدون علامت.

پیشوندهای نوع داده عدد صحیح:

کوتاه پیشوند نوع داده ای را که برای آن اعمال می شود با کاهش اندازه حافظه ای که اشغال می کند کوتاه می کند.

طولانی پیشوند با افزایش اندازه حافظه ای که اشغال می کند، نوع داده ای را که به آن اعمال می شود گسترش می دهد.

بدون علامت - پیشوند دامنه مقادیر مثبت را دو برابر می کند، در حالی که محدوده مقادیر منفی را نمی توان در این نوع داده ذخیره کرد.

بنابراین، اساسا، ما یک نوع عدد صحیح برای نمایش اعداد صحیح داریم: نوع داده int. به لطف پیشوندهای کوتاه، طولانی، بدون علامت، انواع خاصی از انواع داده های int ظاهر می شود که در اندازه حافظه اشغال شده و (یا) محدوده مقادیر پذیرفته شده متفاوت است.

انواع داده های نقطه شناور

دو نوع داده ممیز شناور در C++ وجود دارد: float و double. انواع داده های ممیز شناور برای ذخیره اعداد ممیز شناور طراحی شده اند. انواع داده های شناور و دوگانه می توانند اعداد ممیز شناور مثبت و منفی را ذخیره کنند. نوع داده شناور نصف ردپای حافظه از نوع داده دوگانه دارد، به این معنی که محدوده مقادیر پذیرفته شده نیز کوچکتر است. اگر نوع داده شناور با پیشوند طولانی اعلان شود، محدوده مقادیر پذیرفته شده برابر با محدوده مقادیر پذیرفته شده از نوع داده دوگانه خواهد بود. اساسا، انواع داده های ممیز شناور برای حل مشکلات با دقت محاسباتی بالا، مانند تراکنش های پولی، مورد نیاز است.

بنابراین، ما به نکات اصلی در مورد انواع داده های اصلی در C++ نگاه کرده ایم. تنها چیزی که باقی می ماند این است که نشان دهیم همه این محدوده های مقادیر پذیرفته شده و اندازه های حافظه اشغال شده از کجا آمده اند. و برای این ما برنامه ای ایجاد خواهیم کرد که ویژگی های اصلی همه انواع داده های مورد بحث در بالا را محاسبه می کند.

// data_types.cpp: نقطه ورودی برنامه کنسول را تعریف می کند. #include "stdafx.h" #include // کتابخانه دستکاری I/O #include // فایل هدر توابع ریاضی #include با استفاده از namespace std. int main(int argc، char* argv) (cout<< " data type " << "byte" << " " << " max value "<< endl // سرصفحه ستون <<"bool = " << sizeof(bool) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных bool*/ << (pow(2,sizeof(bool) * 8.0) - 1) << endl << "char = " << sizeof(char) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных char*/ << (pow(2,sizeof(char) * 8.0) - 1) << endl << "short int = " << sizeof(short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных short int*/ << (pow(2,sizeof(short int) * 8.0 - 1) - 1) << endl << "unsigned short int = " << sizeof(unsigned short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned short int*/ << (pow(2,sizeof(unsigned short int) * 8.0) - 1) << endl << "int = " << sizeof(int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных int*/ << (pow(2,sizeof(int) * 8.0 - 1) - 1) << endl << "unsigned int = " << sizeof(unsigned int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned int*/ << (pow(2,sizeof(unsigned int) * 8.0) - 1) << endl << "long int = " << sizeof(long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных long int*/ << (pow(2,sizeof(long int) * 8.0 - 1) - 1) << endl << "unsigned long int = " << sizeof(unsigned long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных undigned long int*/ << (pow(2,sizeof(unsigned long int) * 8.0) - 1) << endl << "float = " << sizeof(float) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных float*/ << (pow(2,sizeof(float) * 8.0 - 1) - 1) << endl << "double = " << sizeof(double) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных double*/ << (pow(2,sizeof(double) * 8.0 - 1) - 1) << endl; system("pause"); return 0; }

این برنامه قرار داده شده است تا بتوانید مشخصات انواع داده ها را در سیستم خود مشاهده کنید. نیازی به درک کد نیست، زیرا برنامه از دستورات کنترلی استفاده می کند که به احتمال زیاد هنوز با آنها آشنا نیستید. برای آشنایی سطحی با کد برنامه نکاتی را در زیر توضیح خواهم داد. اپراتور sizeof() تعداد بایت های اختصاص داده شده برای یک نوع داده یا متغیر را محاسبه می کند. تابعپوو (x,y) معنا را بالا می برد x به توان y ، این تابع از فایل هدر در دسترس است . دستکاری کننده های ثابت و setprecision(). از فایل هدر موجود است . اولی ثابت است , مقادیر را به صورت ثابت به جریان خروجی منتقل می کند. دستکاری کننده setprecision(n) n را نمایش می دهد ارقام اعشاری حداکثر مقدار یک نوع داده خاص با استفاده از فرمول زیر محاسبه می شود:

Max_val_type = 2^(b * 8 - 1) - 1; // برای انواع داده با اعداد منفی و مثبت // که b تعداد بایت های تخصیص داده شده در حافظه برای متغیری با این نوع داده است // ضرب در 8، زیرا در یک بایت 8 بیت وجود دارد // 1 را در پرانتز کم کنید، از آنجایی که اعداد محدوده باید برای مقادیر مثبت و منفی به دو قسمت تقسیم شوند // در پایان 1 تفریق شود، زیرا محدوده اعداد از صفر شروع می شود // انواع داده با پیشوند بدون علامت max_val_type = 2^(b * 8) - 1 // برای انواع داده فقط با اعداد مثبت // توضیحات فرمول مشابه است، فقط واحد از براکت کم نمی شود

نمونه ای از نحوه عملکرد برنامه را می توان در شکل 3 مشاهده کرد. ستون اول انواع داده های اصلی را در C++ نشان می دهد، ستون دوم اندازه حافظه اختصاص داده شده برای هر نوع داده و ستون سوم حداکثر مقدار مربوطه را نشان می دهد. نوع داده می تواند شامل باشد. مقدار حداقل مشابه با حداکثر یافت می شود. برای انواع داده با پیشوند بدون علامت، حداقل مقدار 0 است.

نوع داده حداکثر مقدار بایت bool = 1 255.00 char = 1 255.00 short int = 2 32767.00 int short unsigned = 2 65535.00 int = 4 2147483647.00 unsigned int = 4 4 429 int. 47. 00 بدون علامت طولانی int = 4 4294967295.00 float = 4 2147483647.00 double = 8 9223372036854775808.00 برای ادامه، هر کلیدی را فشار دهید. . .

شکل 3 - انواع داده های C++

به عنوان مثال، اگر به متغیری از نوع short int مقدار 33000 اختصاص داده شود، شبکه بیت سرریز می شود، زیرا حداکثر مقدار در متغیری از نوع short int 32767 است. یعنی مقدار دیگری در یک متغیر ذخیره می شود. از نوع short int، به احتمال زیاد منفی خواهد بود. از آنجایی که ما به نوع داده int اشاره کردیم، شایان ذکر است که می‌توانید کلمه کلیدی int را حذف کنید و مثلاً فقط کوتاه بنویسید. کامپایلر چنین ورودی را به صورت int کوتاه تفسیر می کند. همین امر در مورد پیشوندهای طولانی و بدون علامت نیز صدق می کند. مثلا:

// مختصر برای نوع داده int short a1; // مشابه کوتاه int long a1; // مشابه long int بدون علامت a1; // مانند unsigned int unsigned short a1; // مانند int کوتاه بدون علامت

انتخاب سردبیر
در صورت التهاب پانکراس، یعنی پانکراتیت، رعایت برخی محدودیت های غذایی ضروری است. این تنها راه است...

از سنین مدرسه، کودکان باید مدت زمان زیادی را پشت میز بنشینند. ضعف عضلات کمر ...

گاهی اوقات تشخیص علل طبیعی طبیعی خونریزی و علل ناشی از بیماری ها و اختلالات بسیار دشوار است.

هلیکوباکتر پیلوری شما می توانید با نقض استانداردهای بهداشت فردی، خوردن سبزیجات شسته نشده یا از طریق روش های خانگی به این باکتری آلوده شوید.
فقط 25 سال پیش، دانشمندان به یک کشف هیجان انگیز دست یافتند. مشخص شد که بیماری های دستگاه گوارش مانند ورم معده و...
ترشح در زنان طبیعی است. آنها نتیجه فعالیت ترشحی دهانه رحم و واژن هستند. طبیعی...
همه از دوران کودکی با این ادویه که هنگام پخت به عنوان چاشنی طعم دهنده اضافه می شود آشنا بوده اند. از آماده شده...
خواص مفید آلوئه ورا که به آن آگاو نیز می گویند از زمان های قدیم شناخته شده بوده است. از این گیاه می توان به عنوان یک گیاه موضعی استفاده کرد...
احتمالاً هر فردی حداقل یک بار در زندگی خود با چنین مشکل رایجی روبرو شده است که لکه های قرمز روی بدن ظاهر می شود. اینها...