1
题目:以下不能正确表示代数式4cd/ab的C语言表达式是( )
A. 4cd/a/b
B. cd/a/b4
C. c/a/bd4
D. 4cd/a*b
✅答案:D
解析: 它看的是优先级,*和/优先级相等,所以从左到右,不可以看成数学那种,必须一个一个往后算
2
题目:表达式 (int)((double)9/2)-(9)%2 的值是______。
A.0 B.3 C.4 D.5
✅答案:B
解析:
- (double)9 → 9.0; 9.0 / 2 = 4.5
- (int)4.5 强制转整型,直接截断小数得到 4
- 9 % 2 = 1
- 4 - 1 = 3
一定要注意到底是/还是%,不要看岔眼了
3
题目:下面程序的运行结果是
c
#include<stdio.h>
void main()
{
int y=5, x=14;
y=((x=3*y,x+6),x-1);
printf(“x=%d,y=%d”,x,y);
}
A. x=27,y=27
B. x=12,y=13
C. x=15,y=14
D. x=y=27
✅答案:C
解析:逗号运算符,从左往右执行,整个表达式的值 = 最右侧表达式的值
- x = 3y = 35 = 15
- x+6 计算得到21,但x本身值不变,仍然是15
- x-1 = 14 ,这个就是逗号表达式最终结果,赋值给y
结果: x=15,y=14
注意:那个x+6是没用的,是专门放在那里吓人的
4
题目:设有定义: int x=2; ,以下表达式中,值不为6的是______。
A. x*=x+1
B. x++,2x
C. x=(1+x)
D. 2*x,x+=2
✅答案:D
解析:逗号表达式,结果取最右边。
A: x = x*(x+1) =23=6 (后面一个x保留了原值)
B: x++ 后x=3, 2x = 6
C: x = x*(1+x)=23=6
D: 2x 算出4(不改变x);然后 x += 2 ,x变成4,整个表达式结果是4。
注意:2*x是没用的,放在那里忽悠人
5
题目:表达式 a+=a-=a=9 的值是( )
A.9 B.-9 C.18 D.0
✅答案:D
解析:复合赋值运算符,从右向左计算
复合一定是从右往左,然后把每一项展开。
- a=9 ;
- a -= a → a = a-a = 0 ;
- a += a → a =0+0 =0
6
题目:以下关于运算符优先顺序的描述中正确的是
A. 关系运算符 < 算术运算符 < 赋值运算符 < 逻辑运算符
B. 逻辑运算符 < 关系运算符 < 算术运算符 < 赋值运算符
C. 赋值运算符 < 逻辑运算符 < 关系运算符 < 算术运算符
D. 算术运算符 < 关系运算符 < 赋值运算符 < 逻辑运算符
✅答案:C
解析:优先级从高→低:算术 > 关系 > 逻辑 > 赋值。
题干 < 代表优先级低于,所以:赋值 < 逻辑 < 关系 < 算术。
口诀:算术最高(加减乘除),然后关系(大于小于等于),再逻辑(或与),(赋值,复合)最低。
7
题目:设x、y、t均为int型变量,则执行语句: x=y=3;t=++x||++y; 后,y的值为
A.不定值 B.4 C.3 D.1
✅答案:C
解析: || 逻辑短路:左边表达式为真,右侧完全不执行(非0为真,是真的就直接短路)
&&它如果要正确,要两边都对。但是只要前一个错了,后面就不用看
- ++x ,x自增为4,非0 →条件为真
- ++y 不会执行,y保持原值3。
8
题目:设有 int x=11; 则表达式 (x++ * 1/3) 的值是
A.3 B.4 C.11 D.12
✅答案:A
解析:后置自增 x++:先用原值参与计算,整个表达式算完,x才+1(先运算,x再加1,一定是x而不是表达式)
- 代入x原值11: 11 * 1 / 3
- int整数除法,直接舍弃小数:11/3 = 3
- 表达式运算结束之后,x才变成12
⚠️重点区分:表达式结果=3;变量x最终值=12。选择题最爱在这里挖坑。
记忆口诀: x++ 先运算后加1; ++x 先加后运算。
9
题目:判断字符型变量x是否是大写字母的正确表达式是___
A. ‘A’ <= x <= ‘Z’
B. (x>=A) && (x <= Z)
C. (‘A’<= x) && (‘Z’ >= x)
D. (x >=‘A’) && (x <=‘Z’)
✅答案:D
解析:
A错误,C语言不支持连续比较;
B错误,A、Z没有单引号,会被当成未定义变量;
C逻辑写反;
D标准写法,x大于等于’A’并且小于等于’Z’。
###10
题目:若有说明和语句: int a=5; a++; 此处表达式 a++ 的值是
A.7 B.6 C.5 D.4
✅答案:C
解析:后置 a++ ,表达式本身的值是自增前的原值5;运算结束,变量a才变成6。
坑:题目问【表达式的值】,不是问变量a最后的值!
📌 错题核心总结
- 后置自增 x++ :先用旧值计算整个表达式,全部算完之后变量才+1。题目区分两个概念:表达式的值 vs 变量最终值,这是选择题头号坑。
- 逗号运算符:从左往右执行,整个表达式结果 = 最右边式子的值。
- 逻辑短路 || 和 && : A||B A为真,B不执行; A&&B A为假,B不执行。
- 复合赋值 += -= 运算顺序从右向左。
- 整数除法:int/int,直接截断小数,不四舍五入。
- 连续比较不能简写,不能写 ‘A’<=x<=‘Z’ ,必须用 && 连接。
竹杖芒鞋轻胜马,一蓑烟雨任平生。