运行结果:
逻辑变量b1=true、b2=false b1^b2(异或运算)的结果是:true
b1^!b2(b2取反后与b1异或运算)的结果是:false
思考:
(1) 如果给 b1赋值2,程序会怎样?
会出错。因为类型不匹配:不能从int转换为boolean。
5. 阅读以下程序,写出程序的运行结果,并上机运行验证。
运行结果:
第1段测试代码输出 -1 127 -127 -128
第2段测试代码输出 f=1.23456792E8
d=1.23456789123456784E17
第3段测试代码输出
float型变量强制转换为int型的结果是:3 int型变量运算:(m+2*n)/k的结果是:2
(m+2*n)/k的结果赋值给float型变量后x=2.0
思考:
(1) 分析第1段代码,说明在什么情况下,int类型的数值转换为byte类型,会出现符号变化,即正
数变负数,负数变正数?为何输出会不同?
如果数值超出byte类型的取值范围时,会出现符号变化。因转换时从int类型数值的二进制补码形式中截取低8位,作为byte类型的补码,所以输出会不同。
(2) 分析第2段代码,说明整数类型向浮点型转换是否可能出现精度损失,是否需要强制转换。
整数类型向浮点型转换可能出现精度损失,但不需要强制转换。 (3) 语句float x=3.14f; 改为float x=3.14; 会出错,为什么?
因为3.54是double类型,不能赋给float类型的变量x,在3.54后面加F或f,将其转换成float类型,就可以赋值了。
(4) 如果将x=(m+2*n)/k改为x=(m+2*n)/(float)k,x的结果是多少?
x=(m+2*n)/k=7/3=2
x=(m+2*n)/(float)k=7/3.0=2.3333333
6. 阅读以下程序,写出程序的运行结果,并上机运行验证。
运行结果:
i=7 j=6 k=3 t=13 i=8 j=5 k=3
表达式c1+j*k/j%i的结果是:100 f=false i=7 j=6 f=true j=6
思考:
(1) 分析语句 t=i+++k%--j*2; 的执行过程。
即 t=(i++)+k%(--j)*2; 执行过程如下: --j; 得j为5
t=i+k%j*2=7+3%5*2=7+3*2=13; i++; 得i为8
(2) 表达式c1+j*k/j%i的结果是什么类型?为什么?字符和整数相加得到什么?
是int,因为字符变量c1自动转换成int后参加运算。 字符和整数相加得到整数。
(3) 把语句f=i 输出有变化,j=1,分析如下: i
相关推荐: