By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
454,339 Members | 1,973 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 454,339 IT Pros & Developers. It's quick & easy.

Array indices

P: n/a
Hi,

I had a noobie question:

i = 0;
while (len i) && (SOME_VAL != arr [i])
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 '06 #1
Share this Question
Share on Google+
3 Replies


P: n/a
mm*****@gmail.com writes:
I had a noobie question:

i = 0;
while (len i) && (SOME_VAL != arr [i])
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) ks***@mib.org <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.
Nov 16 '06 #2

P: n/a
In article <11*********************@h54g2000cwb.googlegroups. com>,
<mm*****@gmail.comwrote:
>I had a noobie question:
>i = 0;
while (len i) && (SOME_VAL != arr [i])
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
Nov 16 '06 #3

P: n/a
mm*****@gmail.com wrote:
Hi,

I had a noobie question:

i = 0;
while (len i) && (SOME_VAL != arr [i])
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])) ++i;
or..
while (len i && SOME_VAL != arr[i]) ++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 ---
Nov 16 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.