练习4.25:如果一台机器上int 占32位,char占8位,用的是Latin-1字符集,其中字符‘q’的二进制形式是01110001,那么表达式~’q’<<6的值是什么?
答:
~优先级大于<<
开始时:0000000 00000000 00000000 01110001
按位取反:11111111 11111111 11111111 10001110
左移6位:11 11111111 11111111 10001110 000000
练习4.26:在本节关于测验成绩的例子中,如果使用unsigned int作为quiz1的类型会发生什么情况?
答: unsigned long 在任何机器上都将至少拥有32位,而unsigned int 不能保证在所有机器上都占32位,根据具体编译环境决定,而这个班有27个学生,因此无法保证最终结果的正确性。
练习4.27:下列表达式的结果是什么?
unsigned long ul1 = 3, ul2 = 7;
(a) ull & ul2 (b) ul1 | ul2 (c) ul1 && ul2 (d) ul1 || ul2
答:ul1 表示为 00000000 00000000 00000000 00000011
ul2 表示为 00000000 00000000 00000000 00000111
(a). ul1 & ul2 结果为00000000 00000000 00000000 00000011 即ul1的表示式
(b) ul1 | ul2 结果为00000000 00000000 00000000 00000111 即ul2的表示式
(c) true
(d) true