Array indices

Discussion in 'C Programming' started by mmu2643@gmail.com, Nov 16, 2006.

  1. Guest

    Hi,

    I had a noobie question:

    i = 0;
    while (len > i) && (SOME_VAL != arr )
    i++;

    In the above snippet if len is the number of elements in arr, when i ==
    len, since the first condition fails, will the second one not be
    evaluated at all?

    Hope to hear from someone out there. Thanks.
    , Nov 16, 2006
    #1
    1. Advertising

  2. writes:
    > I had a noobie question:
    >
    > i = 0;
    > while (len > i) && (SOME_VAL != arr )
    > i++;
    >
    > In the above snippet if len is the number of elements in arr, when i ==
    > len, since the first condition fails, will the second one not be
    > evaluated at all?
    >
    > Hope to hear from someone out there. Thanks.


    Quick answer: Yes. But read on.

    The second condition won't be evaluated because the code you posted
    won't even compile. You have to enclose the entire condition in a
    while statement in parentheses; you haven't done that.

    When you post code here, it's (almost) always best to try compiling it
    first, and to copy-and-paste the exact code that you compiled.
    Otherwise, you risk accidentally introducing irrelevant errors (typos
    or whatever) that can obscure what you're actually asking about. If
    possible, you should post an entire compilable program, not just a
    code fragment, so we can try it ourselves if necessary. It happens in
    this case that the error you made (the missing parentheses) was
    trivial, and the problem you're actually asking about was still
    obvious, but that's not always going to be true.

    Finally, your question is really about how the "&&" operator works.
    Any decent C textbook will answer this question for you. We're happy
    to help here, but it's easier for everyone if you can just look it up.
    The comp.lang.c FAQ is at <http://www.c-faq.com>. Section 18 has
    references to several good book. (K&R2 is widely considered to be the
    best C tutorial; H&S5 is a good reference; see 18.10 to find out what
    those abbreviations mean.) (BTW, the FAQ incorrectly says that H&S is
    in its 4th edition; it's actually in its 5th.)

    --
    Keith Thompson (The_Other_Keith) <http://www.ghoti.net/~kst>
    San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
    We must do something. This is something. Therefore, we must do this.
    Keith Thompson, Nov 16, 2006
    #2
    1. Advertising

  3. In article <>,
    <> wrote:

    >I had a noobie question:


    >i = 0;
    >while (len > i) && (SOME_VAL != arr )
    > i++;


    >In the above snippet if len is the number of elements in arr, when i ==
    >len, since the first condition fails, will the second one not be
    >evaluated at all?


    Correct. && does not evaluate the right hand side if the left hand
    side is false, and || does not evaluate the right hand side if
    the left hand side is true.
    --
    If you lie to the compiler, it will get its revenge. -- Henry Spencer
    Walter Roberson, Nov 16, 2006
    #3
  4. Joe Wright Guest

    wrote:
    > Hi,
    >
    > I had a noobie question:
    >
    > i = 0;
    > while (len > i) && (SOME_VAL != arr )
    > i++;
    >
    > In the above snippet if len is the number of elements in arr, when i ==
    > len, since the first condition fails, will the second one not be
    > evaluated at all?
    >
    > Hope to hear from someone out there. Thanks.
    >

    Badly formed. The while condition must be completely parenthesized,
    something like..
    while ((len > i) && (SOME_VAL != arr)) ++i;
    or..
    while (len > i && SOME_VAL != arr) ++i;

    ...and yes, if len > i is false, the second condition is not evaluated.

    --
    Joe Wright
    "Everything should be made as simple as possible, but not simpler."
    --- Albert Einstein ---
    Joe Wright, Nov 16, 2006
    #4
    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. Justin
    Replies:
    1
    Views:
    462
    Gunnar Hjalmarsson
    Jun 3, 2004
  2. b83503104
    Replies:
    3
    Views:
    3,899
    Al Bowers
    May 21, 2004
  3. Thomas Hawtin

    64-bit array indices RFE

    Thomas Hawtin, Aug 12, 2006, in forum: Java
    Replies:
    2
    Views:
    1,312
    Patricia Shanahan
    Aug 12, 2006
  4. Sterten

    checking array indices

    Sterten, Jul 24, 2004, in forum: C Programming
    Replies:
    26
    Views:
    628
    Ricardo Gibert
    Jul 27, 2004
  5. KLaus Blank
    Replies:
    1
    Views:
    448
Loading...

Share This Page