Avatar ·

ما هو unsigned char في C++ وما الفرق بينه وبين char العادي؟

مرحبًا أيها الزملاء! لقد بدأت في تعلم C++ وواجهت بعض الالتباس. في الكتب الدراسية أجد باستمرار النوعين `char` و `unsigned char`. للوهلة الأولى، كلاهما يخزن الأحرف، لكني أشعر أن هناك فرقًا، وأنه مهم. لقد كتبت مثالًا بسيطًا: ```cpp #include int main() { char c = 255; unsigned char uc = 255; std::cout << "char: " << (int)c << std::endl; std::cout << "unsigned char: " << (int)uc << std::endl; return 0; } ``` على نظامي (Windows, Visual Studio) المخرَج الأول يعطي -1، والثاني يعطي 255. كنت أتوقع أن يكون كلاهما 255. لماذا يحدث ذلك؟ وفي أي الحالات يجب استخدام `unsigned char` بدلاً من `char` العادي؟ لقد قرأت أن `char` يمكن أن يكون signed أو unsigned اعتمادًا على المترجم (compiler)، لكن هذا يبدو غير محدد.