第四章 4.8节练习

练习4.25

如果一台机器上int占32位、char占8位。用的是Latin-1字符集,其中字符‘q’的二进制形式是01110001,那么表达式~‘q’<<6的值是什么?

解答:

#include <iostream>

using namespace std;

int main(){
	cout <<hex<<  (~'q' << 6) << endl;
}
结果用十六进制来表示
ffffe380

为什么最后是32位的表达方式,因为在取反操作的执行的之后,数字的类型已经转换为int型,然后在左移了6位,得到了上面的数。


练习4.26

在本节关于测验成绩的例子中,如果使用unsigned int作为quiz1的类型会发生什么情况?

解答:

这个可能要和系统是多少位的挂钩了。

在32bit系统下,或者高于32bit的系统中应该是没有区别的,因为 int所占位数<= long所占位数。

但,当使用的系统是16位,那么int的位数就不够用了,这里会因为位移大于最大位移数,而产生不可预期的结果。


练习4.27

下列表达式的结果是什么?

unsigned long u11 = 3, u12 = 7;

(a) u11 & u12

(b) u11 | u12

(c) u11 && u12

(d) u11 || u12

解答:

这里区分一下逻辑判断操作和逻辑运算操作。

(a) 3

(b) 7

(c) true

(d) true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值