در C++، متاسفانه نوع char به معنی signed char یا unsigned char نیست همیشه و کامپایلر در این مورد تصمیم میگیره.
کد اول تعداد بیتهای ارقام بدون در نظر گرفتن بیت علامت رو در نظر میگیره که در این جا گامپایلر char رو signed char در نظر گرفته و بنابراین مقدار ۷ برگردونده.
کد دوم CHAR_BIT تعداد بیتهای یه بایت در کامپیوتر رو نشون میده که ربطی به علامتدار بودن و نبودن کاراکتر نداره. بنابراین مقدار ۸ رو برگردونده.
میتونیم دو کد زیر رو چاپ کنیم
cout<<numeric_limits<signed char>::digits;
cout<<numeric_limits<unsigned char>::digits;
تا موضوع کاملاً مشخص بشه
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)