| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1062 人关注过本帖
标题:求助c 程序设计语言(第二版)中一道题
只看楼主 加入收藏
windowswind
Rank: 1
等 级:新手上路
帖 子:39
专家分:3
注 册:2010-3-16
结帖率:82.35%
收藏
已结贴  问题点数:20 回复次数:8 
求助c 程序设计语言(第二版)中一道题
题目:编写一个函数setbits(x,p,n,y),该函数返回对x执行下列操作后的值:将x中从第p位开始的n个数(二进制)位设置为y中最右边的n位的值,x中其他数不变
例程:
unsigned setbits (unsigned x,int p,int n,unsigned y){
    return x&~(~(~0<<n)<<(p+1-n))|(y&~(~0<<n))<<(p+1-n);
}
这里如果p+1-n为负数怎么办?如setbits(19,2,4,13)。。。。
搜索更多相关主题的帖子: 程序设计 二进制 
2011-10-10 19:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
如果你觉得某个地方不应该为负数,就事先检测,满足条件在执行返回操作,不满足条件就不执行那个返回操作(返回错误信息,告知调用者传入数据有问题)。

授人以渔,不授人以鱼。
2011-10-10 20:06
windowswind
Rank: 1
等 级:新手上路
帖 子:39
专家分:3
注 册:2010-3-16
收藏
得分:0 
回复 2楼 TonyDeng
我给出的代码是书本上的答案来的,不是我自己写的。不知道这个它为什么不判断?

2011-10-10 20:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你信书这样写没问题就不要想出1楼的疑问了呗

授人以渔,不授人以鱼。
2011-10-10 21:35
windowswind
Rank: 1
等 级:新手上路
帖 子:39
专家分:3
注 册:2010-3-16
收藏
得分:0 
回复 4楼 TonyDeng
本来水平菜,不敢对书本妄加否定,看来还是尽信书不如无书,受教受教!
2011-10-10 21:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不是菜不菜的问题,我这样回答你的意思是说,书上的教材例子是针对某个知识点而举的,不是现实应用程序的代码示范,所以它省略了某些东西也没什么奇怪的,但现实写程序就不能这样了。你的考虑有道理,为着代码的安全性,有时要写很多“保护性代码”的,它可能在绝大多数时候不起作用(在调用者自己确保传入数据没问题时,就用不到这些防护代码),但你编写子程序(函数)时,不能把希望寄托在对方身上,这是现实编程和教学编程之间很大的区别点。只要你觉得有必要,那么不妨加上去,安全性是排在正确性之后处于第二位的。

授人以渔,不授人以鱼。
2011-10-10 21:46
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:5 
楼上正解,教材讲的东西都是片面性的

我的地盘
2011-10-11 11:01
ahu9046
Rank: 2
等 级:论坛游民
帖 子:7
专家分:10
注 册:2011-10-11
收藏
得分:5 
尽信书不如无书。
2011-10-11 13:04
快速回复:求助c 程序设计语言(第二版)中一道题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023454 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved