我使用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
是否被签名,char
、signed char
和unsigned char
都是三种不同的类型。相比之下,int
和signed int
是同一类型的两个名称。