一.常量问题
1.整型和实型
问题
解析
A选项用8进制表示,D选项用16进制表示。C选项后缀加L表示为长整型常量。则选B。
总结
整型常量除了可以直接用十进制形式表示,还可以通过八进制(前缀为0)和十六进制(前缀为0x)的形式表示。也可以通过添加后缀,如L表示长整型。
区分实型常量和整型常量很简单,一是看有没有出现小数形式的,二是看有没有出现e或E构成的指数形式的。
问题
总结
实型常量有两种形式:1.十进制小数形式。可以省略小数点前或后的数字,但是不能同时省略。所以问题中的B、D选项正确。 2.指数形式,e或E都可以,表示以10为底的指数。必须满足e(E)前有数,后为整数。则A不正确。
2.字符常量
问题
解析
首先排除D选项,因为不是单引号,不满足字符常量定义。A、B看似都是用转义字符表示,并且A选项是八进制转义,但是数字9不属于八进制(一个八进制数只有0~7),所以错误。B选项用了转义符号,但是没有这个转义字符。
总结
字符常量有两种形式:1.普通字符,单引号中只能是一个字符。
2.转义字符,在单引号中使用\,将其后面的字符转换成另外意义。此形式下也支持用八进制和十六进制转义。 判断转义字符可以从两方面入手:(1)字母可以先看字母个数,超过两个就直接确定不是转义字符。字母个数为1个,则除a、b、f、r、t、v之外都不对。(2)数字就看是否属于八进制和十六进制,注意是否满足各自的规则。
二.运算符问题
1. /和%
/除号在运算时会使左右两边数据类型一致,遇到数据类型不一致时,会在运算过程中执行默认转换,将低精度类型转为高精度类型。 而%取余要求操作数只能为整数。
2.逻辑运算符&&和||
即短路与和短路或,特点就是当第一个满足相应的条件后续表达式不会执行。
问题
解析
首先A、B选项是或的关系,不满足题意直接排除,D选项的意思就是当a不为0时,再判断b是否为0,随后得出结果;当a为0时,该表达式直接为假。
C选项中,假设a本来就是0呢?但是C选项的赋值加非直接将&&左边的逻辑值锁定为真,所以C选项也是错误的。 正确答案应该是D
总结
本题除了考察了&&和||的问题之外,还间接地考察了=和==的区别。
三、四舍五入的问题
1.除号/
当两个数为整数的时候,使用/运算后结果仍为整数,假如结果位小数,就要直接舍弃小数部分。
问题
解析 题中的3/2数学运算下来为1.5,根据规则结果应该为1,再加上前面的1,又因为是double型,所以选C。
2.强制类型转换
当遇到强制类型转换的时候,同样是将小数部分直接舍去。
问题
解析 x为float类型,但是在输出时,x进行了强制转换,则%d十进制形式输出为4。
2.输出的格式字符%m.nf
m为指定的数据宽度,n为小数位数。对后一位采取四舍五入方法。
问题
解析 小数位数为2位,第三位为6可四舍五入 ,则输出的x为213.83。 注意:当指定的数据宽度不足时,直接忽略m的限制,按实际宽度输出。如本题中数据宽度为4,但是整数有3位,还要保留小数点后2位,所以直接忽略,输出为213.83。