C语言二级--第二章运算符与表达式
【考点三】常考的C语言运算符
1. C语言运算符简介
算数运算符:+,-,*,/,%
关系运算符:>,>=,==,!=,<,<=
位运算符:>>,<<,~,&,|,^
逻辑运算符:!,||,&&
条件运算符:? :
指针运算符:&,*
赋值运算符:=
逗号运算符:,
字节运算符:sizeof
强制运算符:(类型名)(表达式)
初等运算符:圆括号(),下标运算符[]和结构体成员运算符->
其他:下标、分量、函数
2. 运算符的结合性和优先级
(1) 结合性。所有的单目运算符、条件运算符、赋值运算符及其扩展运算符,结合方向都是从右向左,其余运算符的结合方向是从左向右。
(2) 优先级比较。初等运算符>单目运算符>算数运算符(先乘除后加减)>关系运算符>逻辑运算符(不包括“!”)>条件运算符>赋值运算符>逗号运算符
3. 强制类型转换运算符
(1) 可以利用强制类型转换符将一个表达式转换成所需类型。
(2) 一般形式:(类型名)(表达式)
4.逗号运算符和逗号表达式
【考点4】算术运算符和算术表达式
1. 基本的算术运算符
(1) 分类:+(加法运算符和正值运算符)、-(减法运算符或赋值运算符)、*(乘)、/(除)、%(取余)。
其中,“%”运算的两端必须都是整形,其余的运算对象都可以是整形或者实型。
(2) 双目运算符两边的数值必须一致才能进行运算,如果不一致,系统先进行一致性转换。
转换规则:char->short->int->unsigned->long->float->double
(3) 所有实数的运算都是以双精度方式进行的,若是单精度数值,则需要在尾数后面补0转换为双精度。
2. 算数表达式和运算符的优先级结合性
(1) 定义:用算数运算符和括号将运算量连接起来的、符合C语言语法规则的表达式。
(2) 运算对象:函数、常量和变量等。
(3) 运算规则。
可使用多层圆括号,但括号必须配对。运算时由内向外依次计算各表达式的值。
对于不同优先级的运算符,按运算符的优先级由高到低进行运算,则按结合方向进行运算。
若运算符两侧的操作数类型不同,则先利用自动转换或强制类型转换,然后进行运算。
3. 自加、自减运算符
(1) 作用:自加运算符“++”使运算变量的值增1,自减运算符“--”使运算变量的值减1。
(2) 均是单目运算符。运算对象可以是整型或实型变量,但不可以是常量和表达式。
(3) 均可以作为前缀运算符,也可以作为后缀运算符构成一个表达式。
++i,--i:在使用i之前,先使用i的值加1或者减1,再使用此时的表达式的值参加运算。
i++,i--:i的值先参加表达式运算,再执行自增1(自减1)。
(4) 结合方向:自右向左
【考点5】赋值运算符和赋值表达式
1.赋值运算符和赋值表达式
1) “=”称作赋值运算符,作用是将一个数值赋给一个变量或将一个变量的值赋给另一个变量,由赋值运算符组成的表达式称为赋值表达式。
2) 一般形式:变量名=表达式。
赋值运算符的优先级别高于逗号运算符。
赋值运算符“=”和等于运算符“==”有很大差别。
赋值运算符的左侧只能是变量,而不能是常量或者表达式。右侧可以是表达式,包括赋值表达式。
规定最左边变量所得到的新值就是整个赋值表达式的值。
2. 复合的赋值运算符
在赋值运算符之前加上其他运算符可以构成复合赋值运算符。例如,+=、-=、*=、/=、%=等。
两个符号之间不可以有空格。
复合赋值运算符的优先级与赋值运算符的相同。
3. 赋值运算符中的类型转换
如果赋值运算符两侧的类型不一致,在赋值前系统将自动先把右侧表达式求得的数值按赋值号左边的类型进行转换(也可以用强制类型转换的方式)。
【考点6】位运算
1. C语言提供6种位运算符
按位与“&”:若两个相应的二进制位都为1,则该位的结果为1,否则为0.
按位或“|”:两个相应的二进制位中只要有一个为1,则该位的结果为1,否则为0.
按位异或“^”:若两个二进制位相同,则结果为0,否则为1
按位求反“~”:按位取反,即0变1,1变0
左移“<<”:将一个数的二进制位全部左移若干位。
右移“>>”:将一个数的二进制位全部右移若干位。
2. 说明
位运算中除“~”以外,均为双目运算符,要求两侧各有一个运算量。
运算量只能是整型或字符型数据,不能为实型数据。
作者有话说
底色是绿色的点需要注意哦!
参考资料:
上机考试试题库二级C