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位的计算机会出现溢出。