码迷,mamicode.com
首页 > 其他好文 > 详细

[面試題]C符號的優先順序

时间:2015-09-24 16:08:35      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

  • int x = 0;
    if (x = 0 || x == 0) printf("%dn", x);
    printf("%dn", x);  
  • 參考C的優先表, 其實就是if (x = (0 || x == 0))
    會printf出兩個1.

    同一优先级的运算符,运算次序由结合方向所决定。

    简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

    C Operator Precedence Table

    This page lists C operators in order of precedence (highest to lowest). Their associativity indicates in what order operators of equal precedence in an expression are applied.

    Operator

    Description

    Associativity

    ( )
    [ ]
    .
    ->
    ++ --
    Parentheses (function call) (see Note 1)
    Brackets (array subscript)
    Member selection via object name
    Member selection via pointer
    Postfix increment/decrement (see Note 2)

    left-to-right

    ++ --
    + -
    ! ~
    (type)
    *
    &
    sizeof
    Prefix increment/decrement
    Unary plus/minus
    Logical negation/bitwise complement
    Cast (convert value to temporary value of type)
    Dereference
    Address (of operand)
    Determine size in bytes on this implementation
    right-to-left
    *  /  % Multiplication/division/modulus left-to-right
    +  - Addition/subtraction left-to-right
    <<  >> Bitwise shift left, Bitwise shift right left-to-right
    <  <=
    >  >=
    Relational less than/less than or equal to
    Relational greater than/greater than or equal to
    left-to-right
    ==  != Relational is equal to/is not equal to left-to-right
    & Bitwise AND left-to-right
    ^ Bitwise exclusive OR left-to-right
    | Bitwise inclusive OR left-to-right
    && Logical AND left-to-right
    | | Logical OR left-to-right
    ? : Ternary conditional right-to-left
    =
    +=  -=
    *=  /=
    %=  &=
    ^=  |=
    <<=  >>=
    Assignment
    Addition/subtraction assignment
    Multiplication/division assignment
    Modulus/bitwise AND assignment
    Bitwise exclusive/inclusive OR assignment
    Bitwise shift left/right assignment
    right-to-left

    ,

    Comma (separate expressions) left-to-right
    Note 1:
    Parentheses are also used to group sub-expressions to force a different precedence; such parenthetical expressions can be nested and are evaluated from inner to outer.
    Note 2:
    Postfix increment/decrement have high precedence, but the actual increment or decrement of the operand is delayed (to be accomplished sometime before the statement completes execution). So in the statement y = x * z++; the current value of z is used to evaluate the expression (i.e., z++ evaluates to z) and z only incremented after all else is done. See postinc.c for another example.

[面試題]C符號的優先順序

标签:

原文地址:http://www.cnblogs.com/bittorrent/p/4835201.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!