Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| Message-ID | <4F4C9B12.8060507@loria.fr> (permalink) |
|---|---|
| Date | 2012-02-28 10:14 +0100 |
| From | Jens Gustedt <jens.gustedt@loria.fr> |
| Newsgroups | comp.lang.c |
| Subject | Re: Evaluation Order in Function Declaration |
| References | <jihoad$2pj$1@dont-email.me> |
| Organization | Guest of ProXad - France |
Hello,
Am 02/28/2012 06:22 AM, schrieb Shao Miller:
> Is the evaluation order guaranteed to be left-to-right for the
> declaration of 'baz' in the following code? Or are the array size
> expressions unsequenced relative to one another, as in 'a + b'? Or
> something else?
>
> #include <stdio.h>
>
> int foo(void) { puts("foo"); return 1; }
> int bar(void) { puts("bar"); return 1; }
>
> int baz(int (* x)[foo()], int (* y)[bar()]) { return 0; }
>
> int main(void) { return baz(0, 0); }
Yes, not only that it is left to right, you are even allowed to use each
of the preceding identifiers in the expressions. Otherwise things like
double sum(size_t n, size_t m, double A[n][m]) { ... }
could never work reliably.
Jens
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Evaluation Order in Function Declaration Shao Miller <sha0.miller@gmail.com> - 2012-02-28 00:22 -0500
Re: Evaluation Order in Function Declaration Jens Gustedt <jens.gustedt@loria.fr> - 2012-02-28 10:14 +0100
Re: Evaluation Order in Function Declaration Kaz Kylheku <kaz@kylheku.com> - 2012-02-28 09:31 +0000
Re: Evaluation Order in Function Declaration Jens Gustedt <jens.gustedt@loria.fr> - 2012-02-28 13:09 +0100
Re: Evaluation Order in Function Declaration pete <pfiland@mindspring.com> - 2012-03-08 08:49 -0500
csiph-web