要闻

当前位置/ 首页/ 要闻/ 正文

unsigned int unsigned

导读 大家好,我是小典,我来为大家解答以上问题。unsigned,int,unsigned,很多人还不知道,现在让我们一起来看看吧!printf("i=%d");是不是应...

大家好,我是小典,我来为大家解答以上问题。unsigned,int,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.

本文到此讲解完毕了,希望对大家有帮助。