unsigned类型到底是什么类型???

来源:百度知道 编辑:UC知道 时间:2024/05/15 06:56:59
我在书本上经常碰到一些C语言的函数,它的参数类型是unsigned,而不是unsigned int、unsigned long之类的,例如:Turbo C的库函数中有这么几个函数:unsigned far setgraphbufsize(unsigned bufsize);
int read(int handle, void *buf, unsigned len); int write(int handle, void *buf, unsigned len);请高手指点一下迷津!
我较认同二楼朋友的说法,不过能不能说得再详细点,如果有一个函数的返回值类型是unsigned, 那么它的类型是unsigned char之类的,还是和参数表列中的unsigned类型参数一个样?如果参数表列中没有unsigned类型呢???

这种情况下
一般都会在前面进行宏定义的
是为了版本兼容或跨平台
现在的32位变成64位的机器 这样的定义有必要

#if define WINDOWS
define unsigned (unsigned int)
#endif

if denfine LINUX
define unsigned (unsigned long)
#endif

这样的话在跨平台的时候就很有必要了

unsigned char,无符号字符类型,取值范围是(0-255)。看下一个例子:
int main()
{
unsigned char i=255;

printf("%d\n",i);
printf("%d\n",++i);

return 0;
}

i加1后,值不是256,而是0

char a
00000000
|_____这一位不存数据,表示符号
///////////////////////////////////////////////////////
unsigned a
00000000
|____这一位当作存数据的

就是没有符号的意思

说白了,就都是正数
由于在计算机中,整数是以补码形式存放的

所以根据最高位的不同
如果是1,有符号数的话就是负数拉
如果是无符号数,则都解释为正数,同时在相同位数的情况下,所能表达的整数范围变大

可以说是一种变体型的,但是在编写程序的时候最好不要使用变体型,对程序的编译、和运行可能会带来你所想不到的结果。