Messages in this thread |  | | Subject | Re: [BUG] Bad #define, nonportable C, missing {} | From | Andreas Schwab <> | Date | 21 Nov 2001 15:25:02 +0100 |
| |
Vincent Sweeney <v.sweeney@dexterus.com> writes:
|> vda wrote: |> > ------------------------------------------------------------------ |> > Undefined behavior by C std: inc/dec may happen before dereference. |> > Probably GCC is doing inc after right side eval, but standards say nothing |> > about it AFAIK. Move ++ out of the statement to be safe: |> > *a++ = byte_rev[*a]; => *a = byte_rev[*a]; a++; |> |> C std says *always* evaluate from right to left for = operators, so this |> will always make perfect sense.
No. It is undefined which of the operator's arguments is evaluated first, unless it is defined otherwise (only for ||, && and comma).
Andreas.
-- Andreas Schwab "And now for something Andreas.Schwab@suse.de completely different." SuSE Labs, SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |