Alain D D Williams wrote in
 <20221229173548.gw16...@phcomp.co.uk>:
 |On Thu, Dec 29, 2022 at 06:23:09PM +0100, Steffen Nurpmeso wrote:
 |> Hello.
 |> 
 |>   Name:         bash
 |>   Path:         /usr/ports/core
 |>   Version:      5.2.15
 |>   Release:      1
 |> 
 |>   $ i=10 j=20;echo $(( i += j += i += j ));echo $i,$j
 |>   60
 |>   60,50
 |>   $ i=10 j=20;echo $(( i += j += i += i ));echo $i,$j
 |>   50
 |>   50,40
 |
 |You are modifying something that is used elsewhere in an expression. \
 |I am not
 |surprised that you do not get what you expect; others might expect \
 |something
 |different.
 |
 |At most there should be a note in the documentation that this sort of thing
 |leads to undefined behaviour -- that is what happens in other languages.
 |
 |This is very much not a bug in bash.

I very much disagree.  My mailer's $(()) evaluator also does this
right.  (And busybox's one, if it gets accepted.)

 |C does it differently. I would not be surprised to see different C \
 |compilers
 |produce different results or different results with different levels of
 |optimisation.

Come on.  Be a brave man.

--steffen
|
|Der Kragenbaer,                The moon bear,
|der holt sich munter           he cheerfully and one by one
|einen nach dem anderen runter  wa.ks himself off
|(By Robert Gernhardt)

Reply via email to