优先级与结合方向
一、操作对象个数
二、优先级
-
简记
初等运算符(() [] -> .) > 单目运算符 > 算术运算符 > 关系运算符 > 逻辑运算符( && > ||)> 条件运算符 > 赋值运算符 > 逗号运算符
-
一览表
-
口诀
-
单算移关与,异(^)或(|)罗条赋
-
括号成员第一,全体单目第二,乘除余三,加减四,
移位五关系六,等于不等排第七,位与异或和位或,三分天下八九十
逻辑或跟与,12和11,条件高于赋值,逗号运算级最低。
-
三、结合方向
-
简记
结合顺序,除开单目运算、条件运算、赋值运算是从右到左以外,其他的都是从左到右。
-
“-”、“(强制转换)”、“++”、“–”、“*”、“&”、“!”、“~”、“sizeof” 从右到左依次结合
“=”、“/=”、“*=”、“%=”、“+=”、“-=”、“<<=”、“>>=”、“&=”、“^=”、“|=” 从右到左
“?:” 从右到左
-
“[]”、“()”、 “.” 、" ->" 从左到右依次结合
“+”、“-”、“*”、“/”、“%” 从左到右依次结合,按照小学算术优先级结合即可。
“>>”、“<<” 从左到右
“>”、“>=”、“<”、“<=” 从左到右
“==”、“!=” 从左到右
“&” 、“^”、“|” 从左到右
“&&”、“||” 从左到右
“,” 从左到右
-
-
一览表
例:
int a;
--a = 1;
printf("%d", a);
/*
C++语言运行
-- 运算符优先级比 = 运算符优先级高
先计算--a; 将计算后的值给a
再计算赋值运算符,将1赋给a,所以a = 1;
--a = 1; 相当于--a;a = 1;
*/
小提示:
程序员的好习惯:表达式里面优先的,使用小括号来组织