写在前面,一些题目分析,不全都是错的题目
C语言运算符与表达式的练习题
(2) 以下选项中,___D__是不正确的 C 语言字符型常量。
A. 'a' B. '\x41' C. '\101' D. "a"
解: 首先来分析下题目,C语言字符型常量是什么,字符型常量是用单引号括起来的变量,而字符串才是使用双引号括起来的;
(5) 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为___B__。
A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算
C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算
赋值运算的优先级是最低的,他们的优先级为:算术运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 赋值运算符
自我总结口诀:算关系为逻辑赋值
(6) 逻辑运算符中,运算优先级按从高到低依次为____D____。
A. &&,!,|| B. ||,&&,! C. &&,||,! D. !,&&,||
在逻辑运算符中,"非"的优先级大于 “与"和"或”
(7) 表达式!x||a==b 等效于____D___。
A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b)
赋值优先级比较低,所以先计算逻辑运算符,且逻辑运算符中"非"的优先级大于 “与"和"或”
所以这个表达式等价于选项D
(8) 设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值是____B____。
A. 0,0 B. 0,1 C. 1,0 D. 1,1
根据&&运算逻辑,符号前的表达式如果为假,则不执行符号后面的语句所有答案为0 1
(10) 设有语句 int a=3;,则执行了语句 a+=a-=a*=a; 后,变量 a 的值是____B____。
A. 3 B. 0 C. 9 D. -12
运算优先级先算乘除后算加减
a*=a;可以写作a=a*a,同理a-=a;等于a=a-a;
a-a之后等于0所以0+0还是等于0;
(12) 设整型变量 i 值为2,表达式(++i)+(++i)+(++i)的结果是___13___。
A. 6 B. 12 C. 15 D. 表达式出错
正常运算步骤为(2++)+(3++)+(4++) 得出结果为12
但如果进行内存对齐的话就会是三个5相加为15
但系统会先进行对齐相加运算,结果为4+4+5然后等于13
(16) 设a 为整型变量,不能正确表达数学关系:10<a<15的 C 语言表达式是_____A_____ 。
A. 10<a<15 B. a= =11|| a= =12 || a= =13 || a= =14
C. a>10 && a<15 D. !(a<=10) && !(a>=15)
不能直接以数学表达式的方式写表达式
(17) 设 f是实型变量,下列表达式中不是逗号表达式的是_____D____ 。
A. f= 3.2, 1.0 B. f>0, f<10 C. f=2.0, f>0 D. f=(3.2, 1.0)
这些选项都是错的,不能编译执行,但严格一点的话,只有D不是逗号表达式,因为他赋值和逗号结合在一起了
(18) 设ch是 char型变量,其值为 'A',则下面表达式的值是____B____ 。
ch=(ch>='A'&& ch<='Z')? (ch+32):ch
A. A B. a C. Z D. Z
这个表达式的作用是判断ch这个char类型变量是否为同时大于字符A和小于字符Z,题目的结果为符合条件,表达式为真执行ch+32,所以其作用是把大写字符转换为小写字符
(19) 以下运算符中,结合性与其他运算符不同的是 _____A____ 。
A. ++ B. % C. / D. +
后面三个选项为加减乘除算术运算符,只有选项A为自增运算符,所以选A
(20) 以下用户标识符中,合法的是___B_______ 。
A. int B. nit C. 123 D. a+b
A为系统关键字重名
C不能以数字开头
D不能有加号
所以选项B是正确的
(21) C 语言中,要求运算对象只能为整数的运算符是____A____ 。
A. % B. / C. > D. *
只有取余必须要使用整数
(22) PC 机中,'\n'在内存占用的字节数是 ____A____ 。
A. 1 B. 2 C. 3 D. 4
\n为一个整体,一个转义字符,所以占用一个字节
(23) 字符串"ABC"在内存占用的字节数是____B_____ 。
A. 3 B. 4 C. 6 D. 8
因为是字符串所以系统默认在末尾会有一个\0 所以字符串ABC占用为4个字节
(24) 要为字符型变量 a赋初值,下列语句中哪一个是正确的 ____B_____ 。
A. char a="3"; B. char a=’3’; C. char a=%; D. char a=*;
A 3不是字符串
C 没有用单引号括起来
D 同上
所以B选项是正确的