整型数据是带符号数还是无符号数,其实在C语言中内部处理是没有区别的,区别仅仅在于输出的时候。
如果给的是带符号数,那么就存储它的补码示,否则存储它的绝对数值对应的二进制值。
比如 一个16位(二进制位数)整型数据在内存中是两个字节,它的每一位都是1。如果该数据定义时未使用unsigned,那么它就是一个带符号的整数,它的值就是-1; 而如果该数据定义时使用了unsigned,那么它就是一个带符号的整数,它的值就是65535。
#include
int main() {
short a;
unsigned short b;
a=-1;
b=-1;
printf("a=%d,b=%d\n",a,b);
a=65535;
b=65535;
printf("a=%d,b=%d\n",a,b);
}
上面的代码的输出如下,说明不管你怎么赋值,
a=-1,b=65535
a=-1,b=65535