A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王庆功 中级黑马   /  2014-8-20 22:02  /  1609 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在输出二进制的问题的函数老师的pirntBinary是这样的 :
void printfBinary(){
int temp=31;
while(temp>=0){
int value=number >>temp & 1;
printf("%d ",vlaue)
temp--;;
}
if((temp+1)%4==0){
pirntf(" ");
}
}
printf("\n");
}
我的疑问在这句int value = number>>temp & 1;我总是感觉这句话在执行完了后number的值被改变了,虽然我自己验证了number 的值没有被改变。但是我心里总是觉得移位应该是在number内存里的位置改变的,所以number的值在内存中应该被改变了。求解释

5 个回复

倒序浏览
咋没人解答里。
回复 使用道具 举报
这里的number没有变呀,要改变一个变量的值通常得通过赋值运算或者得到变量的地址间接改变,但是这里只是对number的值进行引用而已,所以其值是没有变的;而且如果number的值 变了,你想想循环执行一次,number值岂不是0就是1了。
回复 使用道具 举报
内存只是一个存储空间,没有任何计算功能。无论加减乘除还是移位,都是在CPU内完成的,所以不存在你说的“移位应该是在number内存里的位置改变的”
回复 使用道具 举报
楼上二位大神  都解释得很好啊!!!
回复 使用道具 举报
谢谢楼上两位的解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马