C 语言(2)
2. 运算符
2.1 运算符
1) 算术运算符:用于各类数值运算。包括加 (+) 、减 (-) 、乘 (*) 、除 (/) 、求余(或称模运算,% )、自增 (++) 、自减 (--) 共七种。
2) 关系运算符:用于比较运算。包括大于 (>) 、小于 (<) 、等于 (==) 、 大于等于 (>=) 、小于等于 (<=) 和不等于 (!=) 六种。
3) 逻辑运算符:用于逻辑运算。包括与 (&&) 、或 (||) 、非 (!) 三种。
4) 位操作运算符:参与运算的量,按二进制位进行运算。包括位与 (&) 、位或 (|) 、位非 (~) 、位异或 (^) 、左移 (<<) 、右移 (>>) 六种。
5) 赋值运算符:用于赋值运算,分为简单赋值 (=) 、复合算术赋值 (+=,-=,*=,/=,%=) 和复合位运算赋值 (&=,|=,^=,>>=,<<=) 三类共十一种。
6) 条件运算符:这是一个三目运算符,用于条件求值 (? :) 。
7) 逗号运算符:用于把若干表达式组合成一个表达式 (,) 。
8) 指针运算符:用于取内容 (*) 和取地址 (&) 二种运算。
9) 求字节数运算符:用于计算数据类型所占的字节数 (sizeof) 。
10) 特殊运算符:有括号 () ,下标 [] ,成员 (→,.) 等几种。
2.2 运算符的优先级和结合性
一般而言,单目运算符优先级较高,赋值运算符优先级低。
算术运算符优先级较高,关系和逻辑运算符优先级较低。
逻辑运算符的优先级低于关系运算符。
移位运算符的优先级低于算术运算符,高于关系运算符。
赋值 < 逻辑 < 关系 < 移位 < 算术。
“&&” 和 “||” 低于关系运算符,“!” 高于算术运算符。
优先决
括号成员第一; //括号运算符 []() , 成员运算符. ->
全体单目第二; //所有的单目运算符比如 ++ -- + (正) - (负) 指针运算 * &
乘除余三,加减四; //这个"余"是指取余运算即 %
移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等
等于(与)不等排第七; //即== !=
位与异或和位或; //这几个都是位运算:位与 (&) 异或 (^) 位或 (|)
"三分天下"八九十;
逻辑或跟与; //逻辑运算符:|| 和 &&
十二和十一; //注意顺序:优先级 (||) 低于优先级 (&&)
条件高于赋值, //三目运算符优先级排到 13 位只比赋值运算符和 "," 高
逗号运算级最低! //逗号运算符优先级最低
多数运算符具有左结合性,单目运算符、三目运算符、赋值运算符具有右结合性。