i = 10; result = ++i - --i; How result become ZERO

Discussion in 'C Programming' started by Lakshmi Sreekanth, Sep 21, 2010.

  1. Hi,
    Please clarify my doubt...

    void main( void )
    {
    int result = 0, i = 10;

    result = ++i - --i;

    printf (" Result: %d ", result);
    }

    Output: Result: 0

    WHY ?????? HOW ????? Please clarify this ........
     
    Lakshmi Sreekanth, Sep 21, 2010
    #1
    1. Advertising

  2. Lakshmi Sreekanth

    Ian Collins Guest

    On 09/21/10 08:08 PM, Lakshmi Sreekanth wrote:
    > Hi,
    > Please clarify my doubt...
    >
    > void main( void )
    > {
    > int result = 0, i = 10;
    >
    > result = ++i - --i;
    >
    > printf (" Result: %d ", result);
    > }
    >
    > Output: Result: 0
    >
    > WHY ?????? HOW ????? Please clarify this ........


    Chance.

    --
    Ian Collins
     
    Ian Collins, Sep 21, 2010
    #2
    1. Advertising

  3. Lakshmi Sreekanth

    David RF Guest

    Re: i = 10; result = ++i - --i; How result become ZERO

    On 21 sep, 10:08, Lakshmi Sreekanth <> wrote:
    > Hi,
    > Please clarify my doubt...
    >
    > void main( void )
    > {
    >         int result = 0, i = 10;
    >
    >         result = ++i  -  --i;
    >
    >         printf (" Result: %d ", result);
    >
    > }
    >
    > Output:   Result: 0
    >
    > WHY ?????? HOW ????? Please clarify this ........


    From C-FAQ

    http://c-faq.com/expr/evalorder2.html
     
    David RF, Sep 21, 2010
    #3
  4. Re: i = 10; result = ++i - --i; How result become ZERO

    On 21 Sep, 09:08, Lakshmi Sreekanth <> wrote:

    > Please clarify my doubt...


    in standard english you have a "question" not a "doubt"

    > void main( void )


    that should be
    int main (void)


    main *always* returns an int

    > {
    >         int result = 0, i = 10;
    >
    >         result = ++i  -  --i;


    undefined behaviour. The standard doesn't define the behaviour of a
    statement with multiple ++ or -- in it. See the comp.lang.c FAQ for
    reasons or google it.

    Why are you writing crazy code like this?

    >         printf (" Result: %d ", result);


    main returns an int so you need something like

    return 0;

    > }
    >
    > Output:   Result: 0
    >
    > WHY ?????? HOW ????? Please clarify this ........


    the compiler can do anything it damn well pleases as this in Undefined
    Behaviour
     
    Nick Keighley, Sep 21, 2010
    #4
  5. Re: i = 10; result = ++i - --i; How result become ZERO

    On 21 Sep, 09:22, Nick Keighley <>
    wrote:
    > On 21 Sep, 09:08, Lakshmi Sreekanth <> wrote:
    >
    > > Please clarify my doubt...

    >
    > in standard english you have a "question" not a "doubt"
    >
    > > void main( void )

    >
    > that should be
    > int main (void)
    >
    > main *always* returns an int
    >
    > > {
    > >         int result = 0, i = 10;

    >
    > >         result = ++i  -  --i;

    >
    > undefined behaviour. The standard doesn't define the behaviour of a
    > statement with multiple ++ or -- in it.


    *that operate on the same variable*

    (technically the same "object" (storage location)

    > See the comp.lang.c FAQ for
    > reasons or google it.
    >
    > Why are you writing crazy code like this?
    >
    > >         printf (" Result: %d ", result);

    >
    > main returns an int so you need something like
    >
    >      return 0;
    >
    > > }

    >
    > > Output:   Result: 0

    >
    > > WHY ?????? HOW ????? Please clarify this ........

    >
    > the compiler can do anything it damn well pleases as this in Undefined
    > Behaviour
     
    Nick Keighley, Sep 21, 2010
    #5
  6. Lakshmi Sreekanth

    Mark Bluemel Guest

    On 09/21/2010 09:08 AM, Lakshmi Sreekanth wrote:
    > Hi,
    > Please clarify my doubt...
    >
    > void main( void )
    > {
    > int result = 0, i = 10;
    >
    > result = ++i - --i;
    >
    > printf (" Result: %d ", result);
    > }
    >
    > Output: Result: 0
    >
    > WHY ?????? HOW ????? Please clarify this ........


    We might - but first, please clarify some things for us :-

    * What did you expect to happen?
    * Why did you expect this?
     
    Mark Bluemel, Sep 21, 2010
    #6
  7. On 2010-09-21 12:35, Mark Bluemel wrote:
    > On 09/21/2010 09:08 AM, Lakshmi Sreekanth wrote:
    >> Hi,
    >> Please clarify my doubt...
    >>
    >> void main( void )
    >> {
    >> int result = 0, i = 10;
    >>
    >> result = ++i - --i;
    >>
    >> printf (" Result: %d ", result);
    >> }
    >>
    >> Output: Result: 0
    >>
    >> WHY ?????? HOW ????? Please clarify this ........

    >
    > We might - but first, please clarify some things for us :-
    >
    > * What did you expect to happen?
    > * Why did you expect this?


    And above all, why would you want to write such a a statement in the
    first place?


    /August
     
    August Karlstrom, Sep 21, 2010
    #7
  8. Re: i = 10; result = ++i - --i; How result become ZERO

    On Sep 21, 4:00 pm, August Karlstrom <> wrote:
    > On 2010-09-21 12:35, Mark Bluemel wrote:
    >
    >
    >
    > > On 09/21/2010 09:08 AM, Lakshmi Sreekanth wrote:
    > >> Hi,
    > >> Please clarify my doubt...

    >
    > >> void main( void )
    > >> {
    > >> int result = 0, i = 10;

    >
    > >> result = ++i - --i;

    >
    > >> printf (" Result: %d ", result);
    > >> }

    >
    > >> Output: Result: 0

    >
    > >> WHY ?????? HOW ????? Please clarify this ........

    >
    > > We might - but first, please clarify some things for us :-

    >
    > > * What did you expect to happen?
    > > * Why did you expect this?

    >
    > And above all, why would you want to write such a a statement in the
    > first place?
    >
    > /August



    I attended some technical test(interview), there I faced this
    program.
    => For that Program, *20* was not there as a option. After the test I
    executed the program, the result is: 20
    Options in that test are: A ) 19, B ) 21, C )
    10, D ) Error

    Don't suggest me on the way of writing code. (It's a test program)
    Suggest me on the result.

    TR,
    Sreekanth
     
    Lakshmi Sreekanth, Sep 21, 2010
    #8
  9. Lakshmi Sreekanth

    Ian Collins Guest

    Re: i = 10; result = ++i - --i; How result become ZERO

    On 09/21/10 11:25 PM, Lakshmi Sreekanth wrote:
    > On Sep 21, 4:00 pm, August Karlstrom<> wrote:
    >> On 2010-09-21 12:35, Mark Bluemel wrote:
    >>
    >>
    >>
    >>> On 09/21/2010 09:08 AM, Lakshmi Sreekanth wrote:
    >>>> Hi,
    >>>> Please clarify my doubt...

    >>
    >>>> void main( void )
    >>>> {
    >>>> int result = 0, i = 10;

    >>
    >>>> result = ++i - --i;

    >>
    >>>> printf (" Result: %d ", result);
    >>>> }

    >>
    >>>> Output: Result: 0

    >>
    >>>> WHY ?????? HOW ????? Please clarify this ........

    >>
    >>> We might - but first, please clarify some things for us :-

    >>
    >>> * What did you expect to happen?
    >>> * Why did you expect this?

    >>
    >> And above all, why would you want to write such a a statement in the
    >> first place?
    >>
    >> /August

    >
    >
    > I attended some technical test(interview), there I faced this
    > program.
    > => For that Program, *20* was not there as a option. After the test I
    > executed the program, the result is: 20
    > Options in that test are: A ) 19, B ) 21, C )
    > 10, D ) Error
    >
    > Don't suggest me on the way of writing code. (It's a test program)
    > Suggest me on the result.


    Everyone who's replied already has - the result is undefined.

    The result could your PC eating your cat.

    --
    Ian Collins
     
    Ian Collins, Sep 21, 2010
    #9
  10. Re: i = 10; result = ++i - --i; How result become ZERO

    On Sep 21, 3:22 pm, Nick Keighley <>
    wrote:
    > On 21 Sep, 09:08, Lakshmi Sreekanth <> wrote:
    > > Please clarify my doubt...

    > in standard english you have a "question" not a "doubt"


    (He presumably seeks a clear answer,
    not clarification of his own question!)

    > >         result = ++i  -  --i;

    > undefined behaviour.


    In standard English(*), it is "behavior" that is undefined.

    Addressing OP's doubt, may I recommend that understanding
    the behavior of valid programs is a better use of your
    time than guessing the output of invalid programs?

    James Dow Allen

    (* - Yes, she's your Queen; but "we" have more nuclear weapons.)
     
    James Dow Allen, Sep 21, 2010
    #10
  11. Lakshmi Sreekanth

    BartC Guest

    Re: i = 10; result = ++i - --i; How result become ZERO

    "Lakshmi Sreekanth" <> wrote in message
    news:...
    >> > On 09/21/2010 09:08 AM, Lakshmi Sreekanth wrote:


    >> >> int result = 0, i = 10;

    >>
    >> >> result = ++i - --i;


    >> >> Output: Result: 0

    >>
    >> >> WHY ?????? HOW ????? Please clarify this ........


    > I attended some technical test(interview), there I faced this
    > program.
    > => For that Program, *20* was not there as a option. After the test I
    > executed the program, the result is: 20


    I thought you said the result was 0.

    > Options in that test are: A ) 19, B ) 21, C )
    > 10, D ) Error


    The answer's (D) Error (in the source code) since the result is not
    predictable.

    --
    Bartc
     
    BartC, Sep 21, 2010
    #11
  12. Lakshmi Sreekanth

    osmium Guest

    Re: i = 10; result = ++i - --i; How result become ZERO

    Lakshmi Sreekanth wrote:

    > On Sep 21, 4:00 pm, August Karlstrom <> wrote:
    >> On 2010-09-21 12:35, Mark Bluemel wrote:
    >>
    >>
    >>
    >>> On 09/21/2010 09:08 AM, Lakshmi Sreekanth wrote:
    >>>> Hi,
    >>>> Please clarify my doubt...

    >>
    >>>> void main( void )
    >>>> {
    >>>> int result = 0, i = 10;

    >>
    >>>> result = ++i - --i;

    >>
    >>>> printf (" Result: %d ", result);
    >>>> }

    >>
    >>>> Output: Result: 0

    >>
    >>>> WHY ?????? HOW ????? Please clarify this ........

    >>
    >>> We might - but first, please clarify some things for us :-

    >>
    >>> * What did you expect to happen?
    >>> * Why did you expect this?

    >>
    >> And above all, why would you want to write such a a statement in the
    >> first place?
    >>
    >> /August

    >
    >
    > I attended some technical test(interview), there I faced this
    > program.
    > => For that Program, *20* was not there as a option. After the test I
    > executed the program, the result is: 20
    > Options in that test are: A ) 19, B ) 21, C )
    > 10, D ) Error
    >
    > Don't suggest me on the way of writing code. (It's a test program)
    > Suggest me on the result.


    As a not very interested bystander, it would seem the test is wrong. It
    strikes me as a very poor question to include in a multiple choice test; the
    code should not have been written, as the FAQ makes clear. It is barely
    *conceivable* that they wanted "Error" as an answer. In US English that
    would make little sense, but there is English and there is English, as you
    well know.

    There must be a huge number of applicants in India when they have to resort
    to such a crude means of testing.
     
    osmium, Sep 21, 2010
    #12
  13. Lakshmi Sreekanth

    John Bode Guest

    Re: i = 10; result = ++i - --i; How result become ZERO

    On Sep 21, 6:25 am, Lakshmi Sreekanth <>
    wrote:
    > On Sep 21, 4:00 pm, August Karlstrom <> wrote:
    > > On 2010-09-21 12:35, Mark Bluemel wrote:

    >
    > > > On 09/21/2010 09:08 AM, Lakshmi Sreekanth wrote:
    > > >> Hi,
    > > >> Please clarify my doubt...

    >
    > > >> void main( void )
    > > >> {
    > > >> int result = 0, i = 10;

    >
    > > >> result = ++i - --i;

    >
    > > >> printf (" Result: %d ", result);
    > > >> }

    >
    > > >> Output: Result: 0

    >
    > > >> WHY ?????? HOW ????? Please clarify this ........

    >
    > > > We might - but first, please clarify some things for us :-

    >
    > > > * What did you expect to happen?
    > > > * Why did you expect this?

    >
    > > And above all, why would you want to write such a a statement in the
    > > first place?

    >
    > > /August

    >
    > I attended some technical test(interview), there I faced this
    > program.
    > => For that Program, *20*  was not there as a option. After the test I
    > executed the program, the result is: 20
    > Options in that test are:      A ) 19,          B ) 21,        C )
    > 10,       D ) Error
    >
    > Don't suggest me on the way of writing code. (It's a test program)
    > Suggest me on the result.
    >
    > TR,
    > Sreekanth- Hide quoted text -
    >
    > - Show quoted text -


    D is the least wrong answer, but "undefined behavior" is not
    necessarily the same thing as an error. Here's how the language
    standard defines "undefined behavior":

    > 3.4.3
    > 1 undefined behavior
    > behavior, upon use of a nonportable or erroneous program construct or
    > of erroneous data, for which this International Standard imposes no
    > requirements
    >
    > 2 NOTE Possible undefined behavior ranges from ignoring the situation
    > completely with unpredictable results, to behaving during translation
    > or program execution in a documented manner characteristic of the
    > environment (with or without the issuance of a diagnostic message),
    > to terminating a translation or execution (with the issuance of a
    > diagnostic message).
    >
    > 3 EXAMPLE An example of undefined behavior is the behavior on integer
    > overflow.


    Undefined behavior doesn't *have* to result in an error condition;
    statements like "result = ++i - --i;" will simply give different
    results on different platforms (or even different results on the
    *same* platform depending on compiler settings and even the
    surrounding code).

    Now, *why* does the statement "result = ++i - --i;" result in
    undefined behavior? Because the standard says so:

    > 6.5 Expressions
    >
    > [snip]
    >
    > 2 Between the previous and next sequence point an object shall have
    > its stored value modified at most once by the evaluation of an
    > expression.72) Furthermore, the prior value shall be read only to
    > determine the value to be stored.73)
    >
    > [snip]
    >
    > 73) This paragraph renders undefined statement expressions such as
    > i = ++i + 1;
    > a[i++] = i;
    > while allowing
    > i = i + 1;
    > a = i;


    A sequence point is a point in the program's execution where all the
    side effects from the previous operation have been applied and before
    any side effects from the next operation are applied.

    For the statement

    result = ++i - --i;

    there are 3 side effects: assigning the value of "++i - --i" to
    result, adding 1 to i, and subtracting 1 from i. In this case, the
    sequence point occurs at the end of the statement. Thus, i is being
    modified more than once between sequence points, which makes the
    expression undefined per footnote 73.

    A very important thing to remember with the ++ and -- operators is
    that the side effects don't have to be applied immediately; the only
    requirement is that they be applied before the next sequence point.
    So for an expression like

    a = ++b - --c

    don't assume that b will be updated before c, or that either b or c
    will be updated before the result is assigned to a.

    An online version of the language standard is available at:

    http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf
     
    John Bode, Sep 21, 2010
    #13
  14. Lakshmi Sreekanth

    John Bode Guest

    Re: i = 10; result = ++i - --i; How result become ZERO

    On Sep 21, 7:48 am, "osmium" <> wrote:

    [snip]

    >
    > As a not very interested bystander, it would seem the test is wrong.  It
    > strikes me as a very poor question to include in a multiple choice test; the
    > code should not have been written, as the FAQ makes clear.  It is barely
    > *conceivable*  that they wanted "Error" as an answer.  In US English that
    > would  make little sense, but there is English and there is English, as you
    > well know.
    >
    > There must be a huge number of applicants in India when  they have to resort
    > to such a crude means of testing.


    Based on the questions and code I've seen here and elsewhere from
    students and beginning programmers in India, I've come to the
    following conclusions:

    1. Indian universities and tech schools are using *very* out of date
    materials and tools (Turbo C appears to be the most advanced
    compiler available);

    2. The reference materials are of uniformly poor quality and teach
    the
    kind of bad practice and wrong concepts that infested code written
    in the US back in the early '90s;

    3. These bad practices and wrong concepts have become
    institutionalized
    in the Indian software industry.

    I'm not surprised by seeing an interview question like that at all.
     
    John Bode, Sep 21, 2010
    #14
  15. Re: i = 10; result = ++i - --i; How result become ZERO

    Nick Keighley <> writes:
    > On 21 Sep, 09:22, Nick Keighley <>
    > wrote:
    >> On 21 Sep, 09:08, Lakshmi Sreekanth <> wrote:

    [...]
    >> >         result = ++i  -  --i;

    >>
    >> undefined behaviour. The standard doesn't define the behaviour of a
    >> statement with multiple ++ or -- in it.

    >
    > *that operate on the same variable*
    >
    > (technically the same "object" (storage location)

    [...]

    That's not quite the rule. It applies to multiple modifications of the
    same object *between sequence points*, not within a statement.

    Perhaps a more important point is this: whatever

    result = ++i - --i;

    was intended to do, there's certainly a much simpler and way to express
    that intent, probably one of these:

    result = -1;
    result = 0;
    result = 1;

    depending on what you (wrongly) think the original line actually means.

    C99 6.5p2 states the actual rule:

    Between the previous and next sequence point an object shall
    have its stored value modified at most once by the evaluation
    of an expression. Furthermore, the prior value shall be read
    only to determine the value to be stored.

    But if you write clear code, you rarely have to worry about that.

    --
    Keith Thompson (The_Other_Keith) <http://www.ghoti.net/~kst>
    Nokia
    "We must do something. This is something. Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
     
    Keith Thompson, Sep 21, 2010
    #15
  16. Re: i = 10; result = ++i - --i; How result become ZERO

    On Sep 21, 8:25 am, Lakshmi Sreekanth <>
    wrote:
    > On Sep 21, 4:00 pm, August Karlstrom <> wrote:
    >
    >
    >
    > > On 2010-09-21 12:35, Mark Bluemel wrote:

    >
    > > > On 09/21/2010 09:08 AM, Lakshmi Sreekanth wrote:
    > > >> Hi,
    > > >> Please clarify my doubt...

    >
    > > >> void main( void )
    > > >> {
    > > >> int result = 0, i = 10;

    >
    > > >> result = ++i - --i;

    >
    > > >> printf (" Result: %d ", result);
    > > >> }

    >
    > > >> Output: Result: 0

    >
    > > >> WHY ?????? HOW ????? Please clarify this ........

    >
    > > > We might - but first, please clarify some things for us :-

    >
    > > > * What did you expect to happen?
    > > > * Why did you expect this?

    >
    > > And above all, why would you want to write such a a statement in the
    > > first place?

    >
    > > /August

    >
    > I attended some technical test(interview), there I faced this
    > program.
    > => For that Program, *20*  was not there as a option. After the test I
    > executed the program, the result is: 20
    > Options in that test are:      A ) 19,          B ) 21,        C )
    > 10,       D ) Error
    >
    > Don't suggest me on the way of writing code. (It's a test program)
    > Suggest me on the result.
    >
    > TR,
    > Sreekanth


    Based on the possible answers, I suspect that the original
    program was

    int result = 0, i = 10;
    result = ++i + --i;

    (note the subtraction has become an addition). As has
    been pointed out this invokes undefined behaviour
    so there is no "correct answer". However, if the question were
    about the program

    int result = 0, i = j = 10;
    result = ++i + --j;

    the question has a correct answer, A. I suspect
    that this is the answer that was considered to be
    correct.

    - William Hughes
     
    William Hughes, Sep 21, 2010
    #16
  17. Re: i = 10; result = ++i - --i; How result become ZERO

    In article <>,
    Keith Thompson <> wrote:
    ....
    >Perhaps a more important point is this: whatever
    >
    > result = ++i - --i;
    >
    >was intended to do, there's certainly a much simpler and way to express
    >that intent, probably one of these:


    (etc, etc)

    Unfrickin' believable. You guys totally miss the point.

    I can just imagine that if someone came to you asking for help solving a
    jigsaw puzzle, you'd snottily tell them that they shouldn't have cut it
    up into little pieces in the first place.

    The whole point of questions like this is that they are puzzles. We all
    understand that they aren't real world code. Just as we understand that
    the best way to have an intact picture is not to have cut it up in the
    first place.

    I take it you never enjoyed puzzles much. Probably never understood
    what the point of it was.

    --
    "The anti-regulation business ethos is based on the charmingly naive notion
    that people will not do unspeakable things for money." - Dana Carpender

    Quoted by Paul Ciszek (pciszek at panix dot com). But what I want to know
    is why is this diet/low-carb food author doing making pithy political/economic
    statements?

    Nevertheless, the above quote is dead-on, because, the thing is - business
    in one breath tells us they don't need to be regulated (which is to say:
    that they can morally self-regulate), then in the next breath tells us that
    corporations are amoral entities which have no obligations to anyone except
    their officers and shareholders, then in the next breath they tell us they
    don't need to be regulated (that they can morally self-regulate) ...
     
    Kenny McCormack, Sep 21, 2010
    #17
  18. Re: i = 10; result = ++i - --i; How result become ZERO

    On 2010-09-21 13:25, Lakshmi Sreekanth wrote:
    > Don't suggest me on the way of writing code. (It's a test program)
    > Suggest me on the result.


    The expression ++i - --i is not well defined (like division by zero in
    mathematics). In spite of this you got the result 20 but if you used a
    different compiler you might have gotten the result -234087 for instance.

    This mess of an expression is accepted by the compiler since C allows
    expressions with side effects. C would be a much simpler language if it
    didn't have expression operators with side effects. Sequence points
    would then be a non-issue.

    (Flame suit on...)


    /August
     
    August Karlstrom, Sep 21, 2010
    #18
  19. Re: i = 10; result = ++i - --i; How result become ZERO

    In article <i7ap78$7nj$>,
    August Karlstrom <> wrote:
    ....
    >This mess of an expression is accepted by the compiler since C allows
    >expressions with side effects. C would be a much simpler language if it
    >didn't have expression operators with side effects. Sequence points
    >would then be a non-issue.


    My sense is that you are using the word "simpler" as a stand-in for
    "better". Which is certainly your right, of course.

    But I would argue that more complex languages - that is, languages that
    don't easily map to assembler, as C does - are more restrictive in terms
    of expressions and side effects.

    And, as everyone knows, C's auto-increment and decrement operators come
    to us directly from the PDP11 instruction set.

    --
    (This discussion group is about C, ...)

    Wrong. It is only OCCASIONALLY a discussion group
    about C; mostly, like most "discussion" groups, it is
    off-topic Rorsharch [sic] revelations of the childhood
    traumas of the participants...
     
    Kenny McCormack, Sep 21, 2010
    #19
  20. Re: i = 10; result = ++i - --i; How result become ZERO

    On 2010-09-21 19:26, Kenny McCormack wrote:
    > My sense is that you are using the word "simpler" as a stand-in for
    > "better". Which is certainly your right, of course.


    I mean simpler semantics.

    > But I would argue that more complex languages - that is, languages that
    > don't easily map to assembler, as C does - are more restrictive in terms
    > of expressions and side effects.


    That may be the case but I can't see why the mapping to assembler would
    be more difficult if some parts of the syntax was to be invalidated. Is

    x = ++y;

    easier to map to assembler than

    y++;
    x = y;

    > And, as everyone knows, C's auto-increment and decrement operators come
    > to us directly from the PDP11 instruction set.


    You can still map an increment/decrement statement to an assembler
    instruction even if the increment/decrement feature is not defined as an
    expression.


    /August
     
    August Karlstrom, Sep 21, 2010
    #20
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Zhiqiang Ye
    Replies:
    53
    Views:
    10,412
    Dan Pop
    Jun 28, 2004
  2. Gerard Flanagan
    Replies:
    3
    Views:
    494
    Terry Hancock
    Nov 19, 2005
  3. Christopher Benson-Manica

    Doubles and zero/negative zero

    Christopher Benson-Manica, Jun 30, 2004, in forum: C Programming
    Replies:
    4
    Views:
    712
    Walter
    Jul 1, 2004
  4. Mr. Buffoon
    Replies:
    4
    Views:
    352
    Eric Sosman
    Sep 23, 2010
  5. Michael Tan
    Replies:
    32
    Views:
    1,075
    Ara.T.Howard
    Jul 21, 2005
Loading...

Share This Page