C 语言运算符优先级

C语言的运算符优先级从上到下递减可表示为:

1. ( ) [ ] -> .                             自左向右结合

2. ! ~ ++ -- - (type) * & sizeof 自右向左结合

3. * / %                                   自左向右结合

4. + -                                      自左向右结合

5. << >>                                 自左向右结合

6. <  <= >  >=                         自左向右结合

7. == !=                                  自左向右结合

8. &                                        自左向右结合

9. ^                                         自左向右结合

10. |                                        自左向右结合

11. &&                                   自左向右结合

12. ||                                      自左向右结合

13. ?:                                    自右向左结合

14. assignmens                    自右向左结合

15. ,                                      自左向右结合

优先级顺序准则

优先级最高的是数组下标、函数调用、结构成员; 

单目运算符优先级高于双目运算符;

在双目运算符中:

    算术运算符高于移位运算符;

    移位运算符高于关系运算符;

    关系运算符高于逻辑运算符;

    逻辑运算符高于赋值运算符。

例:

a.b.c      为       (a.b).c      自左至右结合

*p()        为       *(p(c))      函数调用优先级高于 *

*p++       为      *(p++)      单目自右向左结合,指针先加1再取值

a

tax = income>4000 && residency<5 ? 3.5:2.0  为  

                            tax = (((income>4000) && (residency<5)) ? 3.5:2.0)

home =vistor =0 为    home =(vistor =0)  自右向左结合

while (c = get(in) != EOF) 为 while (c = (get(in) != EOF))  != 优先级高于 =

(t=BTYPE(pt1->aty)==STRTY) || t ==UNIONTY 为 

                              (t=((BTYPE(pt1->aty))==STRTY)) || (t ==UNIONTY)

flags & FLAG != 0  为 flags & (FLAG != 0)

r = hi << 4+low      为  r = hi << (4+low)

C缺陷与陷阱 (2.2)

你可能感兴趣的:(计算机相关,c语言,开发语言,后端)