大家好,我是小百,我来为大家解答以上问题。unsigned是什么数据类型,unsigned很多人还不知道,现在让我们一起来看看吧!
printf("i=%d ");
是不是应该写成
printf("i=%d ", i);
有符号和无符号数的区别,从寄存器表示来说:就是最高位是表示+/-还是不表示+/-.
如果是unsigned int,32位,能表示0到2的32次方-1(不是64次方)
unsigned是一个前缀,可以有unsigned long, unsigned char, unsigned short等,默认不写的话unsigned表示unsigned int.
同理也有signed这个前缀,不过是可以忽略的,例如int实际上就表示signed int.
signed 到 unsigned的转换,实际上对于寄存器里面的数据是没有影响的,这是数据操作时汇编指令会不同。
需要注意的就是:
1. 当unsigned和signed在一起做比较时,会把signed转成unsigned再比较,所以
int i=-1;
unsigned int j=1;
if( j>i) 这个判断是 true。
2. 函数调用时
int i=-1;
void fun(unsigned int j)
{
j++;
}
如果你调用fun(i);
此时i的值会被转成unsigned进去,也就是此时i=255.
本文到此讲解完毕了,希望对大家有帮助。