C中int和unsigned int区别有什么用???

我知道他两表示的数的范围不一样,还有最高位int是当符号位理解,unsigned 不是。看下面例子。
int a=65535;
printf("%d,%u",a,a);
结果是-1,65535
把int 换成unsigned int 结果还是一样。
虽说int是有符号整数,65535已超出了它表示的范围,可65535一样存储在a中了啊,是1111 1111 1111 1111.最后输出的时候,不同的格式结果也不一样。所以我觉得int和 unsigned区别没什么用,关键还是看最后输出格式。

一、指代不同

1、int:定义整数类型变量的标识符

2、unsigned int:需声明无符号类型的话就需要在类型前加上unsigned。

二、内存占用不同

1、int:int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1]。

2、unsigned int:unsigned能存储的数据范围则是0~65535。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。


三、特点不同

1、int: Int 返回小于或等于 number 的第一个负整数。例如,Int 将 -8.4 转换成 -9。

2、unsigned int:无符号类型能保存2倍于有符号类型的正整数数据。


参考资料来源:百度百科-unsigned int

参考资料来源:百度百科-INT

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-06
1.signed----有符号,可修饰char、int。Int是默认有符号的。
2.unsigned-----无符号,修饰int 、char
3.long------长型,修饰int 、double
4.short------短型,修饰int
看一下signed和unsigned与int之间的联系与区别。
什么叫做有符号,什么叫做无符号
这个问题其实很简单,比如:5和-5,5没有符号,-5有符号。简单吧。但是在计算机中的这种符号可不简单。我们分别来看一下:
在说明有符号和无符号的区别之前,必须先知道溢出是怎么回事,因为有无符号的根本原因可以说就是因为数据出现了溢出现象导致的。
第2个回答  2012-01-27
加了unsigned存储时,第一位就被当成符号位,这就是区别,你赋值负数时,就会出错。追问

不对吧 我刚试了,
unsigned int a=-1;
printf("%d",a);
结果是-1
没有出错啊

追答

上面我说错了,没加unsigned时,最高位被当成符号位,当然65535的unsigned int和int在内存中的二进制表示是一样的(假定int为2B),但又无符号位表示的范围不一样。当然你只是输出的话,可以通过输出格式强转,但这样没有意义,数据类型不是用来输出的,而是用来表示数据的,在int型超过65535之后就会变成负数!

第3个回答  2012-01-27
哈哈哈,你的思考很有意思。区别是有的,而且很大。很多程序漏洞都是这些小细节的事。给你的小例子:
char ch = -1;
int is = ch;
unsigned int iu = ch;
printf("%d,%u",is,iu);
再看看显示的是什么!!追问

TC下一个字节多少位?