ما هو 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)، لكن هذا يبدو غير محدد.