为什么 char 默认是无符号的,而 int 默认是有符号的?

RAH*_*GRA 1 c++ gcc range char

我使用 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;
}
Run Code Online (Sandbox Code Playgroud)

输出:

-2147483648 2147483647
0 255
Run Code Online (Sandbox Code Playgroud)

eer*_*ika 6

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

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