题目
二、多选题(共20题,40.0分)44.(多选题,2.0分)若以下选项中的变量已正确定义,则不正确的赋值语句[1]是()。A x1=26.8%3B x=3*x+xC x3=0x12D x4=1+2=3;
二、多选题(共20题,40.0分)
44.(多选题,2.0分)
若以下选项中的变量已正确定义,则不正确的赋值语句[1]是()。
A x1=26.8%3
B x=3*x+x
C x3=0x12
D x4=1+2=3;
题目解答
答案
逐一分析各选项:
- A: `x1 = 26.8 % 3`中,`%`运算符不支持浮点数`26.8`,语法错误。
- B: `x = 3 * x + x`合法,可简化为`x = 4 * x`,无问题。
- C: `x3 = 0x12`合法,`0x12`为有效整数。
- D: `x4 = 1 + 2 = 3`中,`1 + 2`非左值,无法赋值,语法错误。
综上,不正确的赋值语句为A和D。
答案:A 和 D。
解析
本题考查C语言中赋值语句的合法性判断,需掌握以下关键点:
- 取模运算符
%的使用限制:仅支持整数类型,不支持浮点数; - 赋值语句的右侧要求:必须是右值(可读取的表达式),不能是左值(可修改的变量);
- 十六进制整数的表示形式:
0x前缀表示十六进制; - 表达式优先级与运算顺序:赋值运算符的优先级最低。
选项A:x1 = 26.8 % 3
- 错误原因:
%运算符要求操作数均为整数,但26.8是浮点数,导致语法错误。 - 正确写法:若需计算浮点数取模,需转换为整数后再运算,例如
x1 = (int)26.8 % 3。
选项B:x = 3 * x + x
- 合法性分析:右侧表达式
3 * x + x等价于4 * x,计算结果为整数,赋值合法。 - 简化形式:可直接写为
x = 4 * x。
选项C:x3 = 0x12
- 合法性分析:
0x12是合法的十六进制整数(等价于十进制的18),赋值正确。
选项D:x4 = 1 + 2 = 3;
- 错误原因:右侧
1 + 2 = 3试图将3赋值给表达式1 + 2,但表达式不可作为左值赋值,且=运算符优先级低于+,实际等价于x4 = (1 + (2 = 3)),但2 = 3本身非法。