4.4:在下面表达式中添加括号,说明其求值的过程及最终结果。编写程序编译该(不加括号的)表达式并输出其结果验证之前的推断。

12 / 3 * 4 + 5 * 15 + 24 % 4 / 2

Ans:((12 / 3) * 4 )+ (5 * 15 )+ ( (24 % 4 )/ 2)。首先加法运算符的优先级低于乘法除法、取模运算符,所以优先计算(结合)乘除取模,又由于乘除取模之间的优先级相同,所以根据其结合律向左结合,从左往右依次进行计算,最后才是加法运算,也是根据左结合,得到的结果是12/3=4,再乘上4,然后5*15,得到75,再然后24%4=0,再除于2,得到0,最后由16+75+0=91,这就是最终结果。

4.5:写出下列表达式的求值结果。

(a) -30 * 3 + 21 / 5  (b)-30 + 3 * 21 / 5

(c)30 / 3 * 21 % 5    (d)-30 / 3 * 21 % 4

Ans:a)-86  b)-18

    c)0    d)-2

4.6:写出一条表达式用于确定一个整数是奇数还是偶数。

Ans:i % 2==0  //若为真,则为偶数,若为假,就为奇数。

4.7:溢出是何含义?写出三条将导致溢出的表达式。

Ans:溢出是指根据计算机本身的特点,如果进行加法或者其他添加数值的操作,导致原有的计算机存储的大小存不下这些数据,例如16位的计算机,最大只能存储16位的数据,但是一些操作却使其操作结果超过了这个16位的大小,这时候就会产生溢出。

int i=32767+1;

unsigned ui=65535+1;

int i=-10000*5;

以上的在16位的计算机会出现溢出。

 

 posted on 2018-08-07 15:49  linlh  阅读(151)  评论(0编辑  收藏  举报