为什么默认情况下 char 是无符号的而 int 是有符号的?

Why char is unsigned and int is signed by default?

我使用 gcc 作为我的 c++ 编译器,当我声明一个 int 数据类型的变量时,默认情况下它被视为已签名。但在 char 的情况下,它被视为无符号。 这是为什么 ? 因为在 xcode IDE 中,默认情况下 char 被视为已签名。

#include<iostream>

using namespace std;

int main() {
   system("clear");
   int x;
   char y;
   cout<<INT_MIN<<" "<<INT_MAX<<endl;
   cout<<CHAR_MIN<<" "<<CHAR_MAX<<endl;

   return 0;
}

输出:

-2147483648 2147483647
0 255

char 在你的系统上是一个无符号类型,因为实现你系统的人选择它应该是无符号的。这种选择因系统而异,C++ 语言指定允许使用任何一种。如果您希望编写跨不同系统工作的程序,您不能假设一种选择。

请注意,无论 char 是否签名,charsigned charunsigned char 都是三种不同的类型。相比之下,intsigned int 是同一类型的两个名称。