3 回答

TA贡献1836条经验 获得超13个赞
第一题:C,C语言中,struct ST是一个数据类型的名字,NEW是对他起的别名,具体参见typedef的定义。所以选择C。
第二题:C选项中,由于整型数和浮点型数内存中编码方式不同,所以输出肯定不会是5.000000,B选项是对的,因为UNION的类型的特征就是这个。
第三题:由于无符号数和有符号数的编码方式不同,对于无符号数的65535,当作有符号数的时候,会十个负数,选项D。

TA贡献1802条经验 获得超6个赞
28、C
D是错误的,注意前面有typedef,如没有,D正确。关于类型名称这点没什么具体的说法,非要说struct ST是类型,而ST不是类型,但定义时候应使用struct ST,而不是ST。 B也没什么严格错误。
27、C
printf中的格式控制是%f,也就是浮点数,所有输出肯定不是5,浮点数内存表示方法不是直接映射的。联合体占的字节是联合体中最大成员所占字节数,所以 B是正确的。
7、A
TC整型占2字节,16位,所以无符号最大表示是2^16-1=65535。输出可能不会是65535,因为printf是用%d控制,而不是%u。但是题问的是x的值,x值没有改变。
这些题没什么意义吧,很不严谨,比如27的A,就有不对的可能,涉及到大端小端(big endian little endian)

TA贡献1793条经验 获得超6个赞
首先,虽然C++是C的超集,但你的问题全都是C的问题,不涉及C++特性。然后,再具体看你的问题:
28:已给出的答案 C 正确。typedef 定义了一个新类型叫做"NEW"。
29:已给出的答案 C 正确(即:该叙述错误)。浮点数在内存里的二进制表示方法和整数表示方法完全不同,具体参见IEEE-754标准。同样的二进制内容当做整数值是5时,当作浮点数就完全不是5。
7:已给出的答案D正确。它考的是上世纪90年代TC(Borland Turbo C)那个16位编译器的东东,所以严格说这是个历史题不是C或者C++的题。int如果16位长,给出的那个值溢出了,答案是D。但这个年代的机器基本上都是32或者64位的int,没有溢出所以答案会是A。由于结果取决于硬件环境和软件(编译器),如果该题不是问TC这个16位文物的话,答案就是C了。
添加回答
举报