- 论坛徽章:
- 0
|
回复 #1 cviolet 的帖子
谭老的程序没有错,只是有些局限,还有楼主对程序分析有点不妥。
main()
{ unsigned int a;
unsigned int getbits(unsigned);
printf("\n Input an octal number:");
scanf("%o",&a);
printf("result:%o\n",getbits(a));
}
unsigned int getbits(unsigned value) 编译器只会检查带入的value是不是unsigned类型并不检查其大小为char,int还是long.
{ unsigned int z; z确定是一个unsigned int类型,
z=value&0100000;
上个语句确定要把value转换成unsigned int类型,
0100000是一个八进制数,其十六进制为0x8000,二进制为1000,0000,0000,0000
可见编译器支持的unsigned int是16位的,
当然还有你输入的数不能大于2^16=65536.
if (z==0100000)
z=~value+1;
else
z=value;
return(z);
} |
|