曾子恒 物联1234
1
2
3
4
5
6
C语言的储存格式是按照其补码的形式存放的
short 类型的取值范围是 -2^15 ~ -2^15-1 ,即-32768 ~ 32767 ,最大值的二进制为0111 1111 1111 1111,此时再加1,所有数往前进位,得到1000 0000 0000 0000 ,最高位数表示符号位,1 表示负数,按照求补码的方式,先减1 得到 0111 1111 1111 1111 ,然后取反得 1000 0000 0000 0000
此原码表示的大小即为 32768 ,故最后等于 -32768
7
8
由于<符号的优先级高于!= ,故首先判定j<k ,若 j < k ,则取值为1 ,则 i 不等于1。若j > k ,则取值为0,i 不等于 0
9
10
条件运算符是一个三目运算符( ? : ) 可以实现 if else 的功能, 一般形式为: 表达式1 ? 表达式2 : 表达式3
意思是: 如果表达式1为真,则运算表达式2,整个条件表达式的值为 表达式2的值;反之,则运算表达式3,整个条件表达式的值为表达式3的值。
11
解析:在计算表达式的时候,如果一个二目运算符两侧运算对象的数据类型不同,则按照先转换后运算的原则,首先将运算对象转换成同一数据类型,然后基于同一数据类型进行运算。
自动类型转换将低数据类型(占用较少的二进制位)转换成高数据类型(占用较多的二进制位)
数据类型由低到高依次为: char - short - int - long - float - double
char型数据可以直接转换为 int型 或 double 型
故 a 计算时符号 ' a' 转换成97 , +3得100 ,为int型
d 计算时 ival , fval均转换为 double型, cval的 char型也转换为double 型
b 计算时 ui , ival 均转换为 float型
c计算时 ui , fval 均转换为double 型