اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

رابطه‌ی بین اندازه‌های نوع داده‌ی کاراکتری

0 امتیاز
318 نمایش

ثابت‌های CHAR_MIN، CHAR_MAX، SCHAR_MIN، SCHAR_MAX، UCHAR_MIN و UCHAR_MAX چه رابطه‌ای با هم دارند؟

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده یکشنبه ۲۵ فروردین ۱۳۹۲ در C++ توسط prodo  

1 پاسخ

0 امتیاز

در حالت کلی در C++ نوع داده‌ی signed char و unsigned char رو داریم. وقتی از char بدون پیشوند علامت‌دار یا بدون علامت استفاده می‌کنیم کامپایلر تصمیم می‌گیره که char رو بدون علامت در نظر بگیره یا علامت‌دار و این تصمیم وابسته به کامپایلره.

بنابراین CHAR_MIN و CHAR_MAX تبدیل به UCHAR_MIN و UCHAR_MAX یا SCHAR_MIN و SCHAR_MAX خواهند شد.

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

مثلاً وقتی که کاراکتر ۸ بیت باشه، حداکثر و حداقل مقدار علامت‌دارش برابر -۱۲۸ و ۱۲۷ هست. برای بدون علامت هم حداقل و حداکثر ۰ و ۲۵۵ هست.

برای به دست آوردن تعداد بیت‌های نوع داده‌ی کاراکتری ثابت CHAR_BIT رو بررسی می‌کنیم که روی هر ماشین مقدار مناسب رو می‌ده.

بنابراین به طور کلی

UCHAR_MIN = 0;
UCHAR_MAX = 2^CHAR_BIT-1;
SCHAR_MIN = -2^(CHAR_BIT-1);
SCHAR_MAX = 2^(CHAR_BIT-1)-1;
CHAR_MIN = UCHAR_MIN || SCHAR_MIN;
CHAR_MAX = UCHAR_MAX || SCHAR_MAX;
هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده جمعه ۱۰ خرداد ۱۳۹۲ توسط prodo