C语言选择题

练习二级选择题,点击选项即可查看结果

第121题. 若定义 int a=4,b=7;,表达式a||++b执行完毕后b的值是()
正确选项:
解析:||逻辑或短路规则:只要左边表达式结果为真,右边不再执行。a=4非0为真,++b不会运行,b保持原值7。只有左边为假的时候,才会运算||右侧表达式。
第122题. 下面关于数组与指针叙述错误的是()
正确选项:
解析:数组和指针只是使用上相似,本质不同。sizeof(数组名)得到整个数组占用总字节;sizeof(指针变量)得到指针本身字节。只有数组作为函数形参才会退化成为指针。
第123题. 32位编译器下,union U { char c; int i; };,sizeof(union U)结果是()
正确选项:
解析:共用体union占用内存大小等于占用字节最大的成员。char占1字节,int占4字节,最大成员为int,所以联合体大小4字节。所有成员共享这4字节内存空间。
第124题. 执行 int x=8; x %= 3;,变量x最终的值为()
正确选项:
解析:%=取模复合赋值,等价 x = x % 3。8除以3商2余数2,x结果等于2。取模运算结果符号和被除数保持一致,负数取模需要留意。
第125题. C语言中,文件结束标记EOF的本质是()
正确选项:
解析:EOF是stdio.h里面定义的宏,值为‑1。getchar返回值应当用int变量接收,如果用char接收,当char是无符号类型时永远无法等于‑1,会造成判断文件结束出错。
第126题. 若 int arr[3][4];,表达式 arr+1 代表的含义是()
正确选项:
解析:二维数组名arr指向第0行。arr+1跳过一整行4个int,指向第二行arr[1]首地址。*(arr+1)等价arr[1],是该行第一个元素&arr[1][0]。
第127题. 下面哪一项属于C语言合法标识符()
正确选项:
解析:标识符只能由字母、数字、下划线构成,不能以数字开头,不能包含减号、空格。_student以下划线开头,是合法标识符;int‑num含减号,3score数字开头,a b含空格全部非法。
第128题. 执行 int a=5; printf("%d", a>3 ? ++a : a‑‑);输出结果是()
正确选项:
解析:三目运算符条件a>3成立,执行表达式++a,先自增a变成6,输出6。冒号后面a‑‑不会执行。三目只会执行两个分支其中一个表达式,不会同时运行。
第129题. 下面关于全局static变量说法正确的是()
正确选项:
解析:static修饰全局变量,限定作用域为本源文件,外部源文件无法访问。普通全局变量才可以extern跨文件引用。static全局变量存静态区,默认初始值0,程序全程存活。
第130题. 表达式 ~2(int占4字节)按位取反之后十进制值为()
正确选项:
解析:~是按位取反运算符,所有二进制位0变1、1变0。2二进制0000 0010,取反后高位全部置1,按照补码规则结果为‑3。注意~不是数学负号,不要混淆‑和~。