20135306黄韧[2.72 2.77 3.70](http://i.cnblogs.com/EditPosts.aspx?opt=1)
2.72
A.size_t是无符号整数,因此左边都会先转换为无符号整数,它肯定是大于等于0的。
B.判断条件改为
if(maxbytes > 0 && maxbytes >= sizeof(val))
2.77
#include<stdio.h>
int divide_power2(int x, int k){ int ans = x>>k;
int w = sizeof(int)<<3;
ans += (x>>(w-1)) && (x&((1<<k)-1)); return ans; }
void main()
{
int x;
int k;
int ans;
printf("请输入x\n");
scanf("%d",&x);
printf("请输入k\n");
scanf("%d",&k);
ans=divide_power2(x,k);
printf("x/2^k=");
printf("%d",ans);
}
先计算x>>k,再考虑舍入。
舍入的条件是x<0&&x的最后k位不为0。
3.70
(1)生成以上代码的C版本
Long traverse(tree_ptr tp)
{
Long v = MAX_LONG, rv, lv;
If (tp != NULL)
{
lv = traverse(tp->left);
rv = traverse(tp->right);
v = lv < rv ? lv : rv //Line16 cmovle: if(r12<rax) rax=r12;
v = v > tp->v ? tp->v : v //Line20 cmovle: if(rax>rbx) rax=rbx;
}
return v;
}
(2)用自然语言解释这个函数计算的是什么。
答:函数的目的是找到树的所有节点的值中最小的一个。