黑马程序员技术交流社区

标题: 写一个函数把10进制转换成二进制输出 [打印本页]

作者: 1312878967    时间: 2015-7-29 16:41
标题: 写一个函数把10进制转换成二进制输出
int len = sizeof(n)*8;
int temp;
for (int i = 0 ; i < len ; i++){
         temp = n;
         temp = temp >>31 -i;
         int t = temp & 1;
          printf("%d",t);

         printf("\n");
}
这只写了个被调函数,想问下 上述函数中 temp=temp>>31-i;表达式,会不会出现31-i<0的情况,为什么?若出现了怎么办?
谢谢

作者: fmi110    时间: 2015-7-29 16:41
只要保证传递给函数的参数n是int型,就不会出现小于0的情况
因为sizeof(n)=sizeof(int)=4
所以len = 4*8 =32 也就是四个字节长度,所以
for (int i = 0 ; i < (len=32) ; i++)
    31-i >0  恒为真
如果怕出现负的情况,可以添加一个判断语句
if(31-i>0)
  temp = temp >>31 -i;
作者: 1312878967    时间: 2015-7-30 13:35
fmi110 发表于 2015-7-30 09:13
只要保证传递给函数的参数n是int型,就不会出现小于0的情况
因为sizeof(n)=sizeof(int)=4
所以len = 4*8 =3 ...

懂啦 谢谢哈




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2