associativity of operators in C language

Discussion in 'C' started by hitesh_best, Aug 3, 2007.

  1. hitesh_best

    hitesh_best New Member

    Joined:
    Aug 3, 2007
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    0
    Hello friends,

    First of all I would like to say that although I have initiatiated this thread in "engineering concepts" forum, but I thing it should be here, please forgive me for this.

    I am following Let us C, 6th edition, by Yashavant Kanetkar,
    I have a problem understanding the concept of associativity of operators,

    I tried to find some good material on internet by searching in google but could not find much.

    Kanetkar writes,

    "Left to Right associativity means that the left operand must be unambiguous. Unambiguous in what sense? It must not be involved in evaluation of any other sub-expression. Similarly in case of Right to Left associativity the right operator must be unambiguous."

    I could not understand what it means by "being unambiguous".

    There is a expression,

    g = 10/5/2/1

    Now we have to find the order in whcih the calculations will take place
    In his solution book, he gives the solution using a table like this.

    Code:
     operator            left operand               Right operand                         Remark
         
    1st     /               10                        5 or 5/2/1               Left operand is unambiguous,
                                                                                                Right is not
    
    2nd   /               10/5 or 5                   2 or 2/1             Left operand is unambiguous,
                                                                                                 Right is not
    
    3rd   /               10/5/2 or 2                1                       Right operand is unambiguous,
                                                                                                Left is not
    
    next he says
    "operation will be performed first which has an unambiguous left operand.
    evaluation order will be:

    10/5/2/1
    2/2/1
    1/1
    1
    "

    My questions are:

    1) in first row and right column why he writes only two operands that are possible: 5 or 5/2/1 why also not 5/2


    2) In the second row in the remark column why he says that left operand is unambiguous when there are two operands that are possible i.e. 10/5 or 5.

    3) If two '/' has left operand as unambiguous (assuming that what he is saying in row 2 is correct) , how he solved the problem. I mean how he decided that first operatoe '/' will be evaluated first.

    Thanks a lot friends.
     
  2. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,376
    Likes Received:
    388
    Trophy Points:
    83
    That is also possible but probably what the context of the understanding goes he meant the right operand can be both but he probably did not mean should be both.

    So whats your question here.

    What he meant is unambiguous operators will be evaluated. when its 10/2/5 Its either the 10/2 = Result/5 is evaluated or 10 / Result (2/5) is done depending on the complier implementation and its named and left unambiguous or right unambiguous.
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice