C语言中的简单题目,有赏!

2.若有定义”char a;int b;float c;double d;”,则表达式a*b+d-c的值的类型为(D)。
A.float B.int C.chat D.double

2.2 在下面的用户标识符中,判断哪些是非法的。
_fun Int 1_num num1 +N sum-1 break 123 My_name

2.3 如果某微机上使用的C编译系统微整形数据按照2字节在内存中分配空间,请写出下面各整数的补码的十六进制形式。
(2)1
(4)-1
(5)-32768

麻烦帮我解答一下,顺便给一个很简短的理由,尤其是前两题。
谁还能帮我说说第三题是怎么算出来的?课本上一点都没谈,习题却出了。

第1个回答  2011-03-11
1. 考的是隐式数据类型转换, 双目运算符在运算之前,要求两个操作数类型一致,当不一致时,需要转换数据类型,这种转换是自动完成的,故称隐式类型转换。转换规则是低精度的类型向高精度的类型转换。
表达式a*b+d-c 中,首先计算a*b ,因a是char 型,b是int ,因此计算后的值假设是x,则x是int型的,然后计算x +d - c,同样的道理分析,最终结果是double型的。

2 C中标识符是以下划线或字母开头的,后接字母、下划线 和数字的字符串,标准的c是不限制长度的,但有的编译器限制长度。
1_num 123 +N //头错误
sum-1 // 字符‘-’非法
break //关键字不能作为标识符

3.
第三个就帮你做了,不过提醒你一下这个数-32768用两个字节存储是要溢出的。
第2个回答  2011-03-11
2 a*b 将a转换成int计算,结果为int
a*b+d 将a*b转换成double计算,结果为double
a*b+d-c 将c转换成double计算,结果为double

_fun 合法
Int 非法 保留字
1_num 非法 以数字开头
num1 合法
+N 非法 不能使用+
sum-1 非法 不能使用-
break 非法 保留字
123 非法 以数字开头
My_name 合法

(2)1 0x0001
(4)-1 0xffff
(5)-32768 0x8000本回答被提问者采纳
第3个回答  2011-03-11
第一题:C语言中,当一个表达式中有不同数据类型的数据参与运算时,需要进行类型转换,低级向高级转换,double最高,所以选D
第二题:用户标识符,不能是C语言关键字,由下划线、字母和数字构成,数字不能放在最前面。那么非法的是 int 1_ num +N sum-1 break 123 其中int break是关键字。
第三题:建议你看看书,这个你必须会算才行。
希望帮到你,有不懂得可以再问我。
第4个回答  2011-03-11
第一题:((((a*b->int)+d)->double)-c)->double,顺着括号的优先级,箭头指向表达式的类型。
第二题:标识符只能用英文字母、下划线和数字来表示。且标识符不能以数字开头
第三题:只要掌握转换规则,任何转换都不会怕。正数的原码、反码、补码都一样,负数符号位取1,且在转换过程中不改变符号位。当都转换成补码后,从低位向高位数,不够位补0。四位表示一个16位的值。

不知道我表达清楚没有~
第5个回答  2011-03-11
第一题:因为double的优先级高于其他的数据类型。
第二题:标识符的定义:
1、由字母,数字和下划线组成。
2、开头由字母和下划线组成。
3、标识符的定义不能是关键字。
1_num,num+1,+N、sum-1、break、123。都是非法的标识符。
第三题:0x0001、0xFFFF、0x8000 。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网