home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / lang / c / 16065 < prev    next >
Encoding:
Internet Message Format  |  1992-11-07  |  2.0 KB

  1. Path: sparky!uunet!cis.ohio-state.edu!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!ira.uka.de!math.fu-berlin.de!news.netmbx.de!Germany.EU.net!nixpbe!uranium!uranium!not-for-mail
  2. From: Josef Moellers <mollers.pad@sni.de>
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Order of evaluation?
  5. Date: 5 Nov 1992 11:49:59 +0100
  6. Organization: Siemens Nixdorf Informationssysteme AG, Paderborn, Germany
  7. Lines: 33
  8. Sender: josef@uranium.sto.pdb.sni.de
  9. Message-ID: <1dau8nINNk59@uranium.sto.pdb.sni.de>
  10. References: <3736@dozo.and.nl> <1992Oct27.002204.11825@den.mmc.com> <josef.720691377@uranium> <1992Nov2.192805.17329@CSD-NewsHost.Stanford.EDU>
  11.  
  12. In <1992Nov2.192805.17329@CSD-NewsHost.Stanford.EDU> amorgan@Xenon.Stanford.EDU (Crunchy Frog) writes:
  13.  
  14. >In article <josef.720691377@uranium> Josef Moellers <mollers.pad@sni.de> writes:
  15. >>
  16. >>Furthermore, as "boolean" operations are nothing special in C, I wonder
  17. >>whether in
  18. >>    a() || b()
  19. >>b _should_ be called if a() returns TRUE.
  20.  
  21. >It shouldn't be.  C has short circuit evaluation for && and ||.
  22.  
  23. I'd like to clarify a mis-understanding.
  24. I _do_ know, how || and && work under C.
  25.  
  26. The original thread was about whether a C-Compiler must arrange for
  27. first calling all functions and then evaluating the expressions.
  28.  
  29. In my example, the original claim would mean that a() _and_ b() are
  30. called first, then the left side was (trivially) evaluated using the
  31. results of the call to a(), and if it was found to be TRUE, the result
  32. of the call to b() was dropped.
  33.  
  34. My understanding was (and still is), that functions need only be called
  35. as far as necessary.
  36. E.g. in an expression like
  37.     a() * b() * c() * e() * f() * g()
  38. the compiler might decide to generate code to test the intermediate
  39. result to be 0, in which case the rest of the expression might be
  40. dropped.
  41. -- 
  42. | Josef Moellers        | c/o Siemens Nixdorf Informationssysteme AG  |
  43. |  USA: mollers.pad@sni-usa.com    | Abt. STO-XS 113       | Riemekestrasse   |
  44. | !USA: mollers.pad@sni.de    | Phone: (+49) 5251 835124 | D-4790 Paderborn |
  45.