C语言中,运算符优先级从高到低共15级,同一优先级以自左至右或者自右向左的方向结合。其中,只有第2优先级(所有的单目运算符)和第13优先级(条件运算符)、14优先级(赋值运算符)使用自右至左的结合方式,其余皆为自左向右结合。
例子1:
int i=3;
printf("%d %d",-i++,i);
答案:
-3 4
例子2:
*(n+i++) //先求*(n+i),然后i=i+1
负号运算符与自增运算符属于同一运算优先级,都遵循自右向左的结合方向,所以,-i++
等同于-(i++)
,注意,-i++
是先对i的原值3进行负号运算,输出-i
后对i
进行自增运算。
运算符和结合性一览表