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



我使用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是同一类型的两个名称。

相关内容

最新更新