1、附录 运算符和结合性优先级 运算符 含义 要求运算对象的个数 结合方法1( ) 圆括号下标运算标指向结构体成员运算符结构体成员运算符自左至右2!+-(类型)*&sizeof逻辑非运算符按位取反运算符自增运算符自减运算符负号运算符类型转换运算符指针运算符地址与运算符长度运算符1(单目运算符) 自右至左3*/%乘法运算符除法运算符求余运算符2(双目运算符) 自左至右4+-加法运算符减法运算符2(双目运算符) 自左至右5左移运算符右移运算符2(双目运算符) 自左至右6 = 关系运算符 2(双目运算符) 自左至右7 !等于运算符不等于运算符2(双目运算符) 自左至右8 & 按位与运算符 2(双目运算符
2、) 自左至右9 按位异或运算符 2(双目运算符) 自左至右10 按位或运算符 2(双目运算符) 自左至右11 & 逻辑与运算符 2(双目运算符) 自左至右12 逻辑运算符 2(双目运算符) 自左至右13 ?: 条件运算符 2(双目运算符) 自右至左14 =+=-=*=/=%=&=赋值运算符 2 自右至左15 , 逗号运算符(顺序求职运算符)自左至右说明:(1)同一优先级的运算符优先级别相同,运算次序由结合方向决定。例如,*与具有相同的优先级别,其结合方向为自左至右,因此,3*54 的运算次序是先乘后除。一和+为同一优先级,结合方向为自右至左,因此-i+相当于一(i+ ) 。(2)不同的运算符要
3、求有不同的运算对象个数,如十(加)和-(减)为双目运算符,要求在运算符两侧各有一个运算对象(如 3+5、8-3 等) 。而+和-(负号)运算符是一元运算符,只能在运算符的一侧出现一个运算对象(如-a、i+、-i、 (float)i、sizeof (int) 、*p 等) 。条件运算符是 C 语言中唯一的一个三目运算符,如 x?a:b。(3)从上述表中可以大致归纳出各类运算符的优先级:初等运算符( ) 单目运算符算述运算符(先乘除,后加减)关系运算符逻辑运算符(不包括!)条件运算符赋值运算符逗号运算符以上的优先级别由上到下递减。初等运算符优先级最高,逗号运算符优先级最低。位运算符的优先级比较分散。为了容易记忆,使用位运算符时可加圆弧号。