در حالت کلی در 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;
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)