第一题
1. 设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为
A:0~255
B:0~3267
C:0~65535
D:0~2147483647
答案及解析 C
unsigned int 是无符号的类型,二进制位中最高位是数值位
所以最大值:1111 1111 1111 1111 = 65535
第二题
2. 执行下列程序:
#define MA(x, y) (x*y) i = 5; i = MA(i,i+1)-7;
变量i的值应为( )
A:30
B:19
C:23
D:1
答案及解析 B
define宏定义是替换
i = MA(i, i + 1) - 7 = i * i + 1 - 7 = 19
第三题
3. 用fopen函数打开一个新的二进制文件,该文件既能读也能写,则文件方字符串应是()
A:"ab++”
B:"wb+"
C:"rb+"
D:"ab"
答案及解析 B
第四题
4. 请问下列代码的输出是多少()
#include <stdio.h> int main() { int m[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; int(*p)[4] = (int(*)[4])m; printf("%d", p[1][2]); return 0; }
A:7
B:3
C:8
D:4
答案及解析 A
本题是将指针数组和一维数组进行联系,将一维数组m强制转换为指针数组类型,数据范围是4个元素,所以p[1][2] 相当于 *(*(p + 1) + 2),先向后移动4个元素大小,再移动两个元素大小。
第五题
5. 有以下定义: char a; int b; float c; double d;则表达式a*b+d-c值的类型为:
A:float
B:int
C:char
D:double
答案及解析 D
本题涉及到隐式类型转换隐式类型转换(整型提升和截断)、强制类型转换的总结-CSDN博客