NAME
C operator precedences.
precedence names
atom primary postfix unary cast pm mult add shift rel eq band bxor bor and xor or cond assign comma expr
postfix
++,postfix −−,postfix
prefix
~,primary +,unary -,unary !,unary &,unary *,unary ++,unary −−,unary sizeof,unary
infix
+,add -,add *,mult /,mult %,mult <<,shift >>,shift
&,band |,bor ^,bxor
&&,and ||,or
+=,assign -=,assign *=,assign /=,assign %=,assign <<=,assign >>=,assign &=,assign |=,assign ^=,assign
<,rel >,rel >=,rel <=,rel ==,eq !=,eq
->,postfix ->*,pm ,,comma
default precedences
"~$1",("~$1:primary","primary");
"$1++",("$1:postfix ++
","postfix");
"$1−−",("$1:postfix
−− ","postfix");
"$1($2)",("$1:postfix($2:assign)","postfix");
"$1[$2]",("$1:postfix[$2:expr]","postfix");
"$1->$2",("$1:postfix->$2:atom","postfix");
"~$1",("~$1:unary","unary");
"+$1",("+ $1:unary","unary");
"-$1",("- $1:unary","unary");
"!$1",("!$1:unary","unary");
"&$1",("&
$1:unary","unary");
"*$1",("*$1:unary","unary");
"++$1",("++
$1:unary","unary");
"−−$1",("−−
$1:unary","unary");
"$1+$2",("$1:add +
$2:mult","add");
"$1-$2",("$1:add -
$2:mult","add");
"$1*$2",("$1:mult *
$2:pm","mult");
"$1/$2",("$1:mult /
$2:pm","mult");
"$1%$2",("$1:mult %
$2:pm","mult");
"$1<<$2",("$1:shift <<
$2:band","shift");
"$1>>$2",("$1:shift >>
$2:band","shift");
"$1&$2",("$1:band &
$2:bor","band");
"$1|$2",("$1:bor |
$2:bxor","bor");
"$1^$2",("$1:bxor ^
$2:and","bxor");
"$1&&$2",("$1:and &&
$2:or","and");
"$1||$2",("$1:or ||
$2:cond","or");
"$1+=$2",("$1:cond +=
$2:assign","assign");
"$1-=$2",("$1:cond -=
$2:assign","assign");
"$1*=$2",("$1:cond *=
$2:assign","assign");
"$1/=$2",("$1:cond /=
$2:assign","assign");
"$1%=$2",("$1:cond %=
$2:assign","assign");
"$1<<=$2",("$1:cond <<=
$2:assign","assign");
"$1>>=$2",("$1:cond >>=
$2:assign","assign");
"$1&=$2",("$1:cond &=
$2:assign","assign");
"$1|=$2",("$1:cond |=
$2:assign","assign");
"$1^=$2",("$1:cond ^=
$2:assign","assign");
"$1<$2",("$1:rel <
$2:shift","rel");
"$1>$2",("$1:rel >
$2:shift","rel");
"$1>=$2",("$1:rel >=
$2:shift","rel");
"$1<=$2",("$1:rel <=
$2:shift","rel");
"$1==$2",("$1:eq ==
$2:rel","eq");
"$1!=$2",("$1:eq !=
$2:rel","eq");
"$1.*$2",("$1:pm.*$2:cast","pm");
"$1->*$2",("$1:pm->*$2:cast","pm");
"$1:comma,$2:comma",("$1,$2","comma");