On 08/04/2013 12:41 AM, Dan Douglas wrote:
> On Sunday, August 04, 2013 12:30:48 AM Roland Mainz wrote:
>> On Sun, Aug 4, 2013 at 12:04 AM, Dan Douglas <[email protected]> wrote:
>>> Is it specified what the value of x should be after this expression?
>>>
>>> x=0; : $((x+=x=1))
>>>
>>> Bash, ksh93, mksh, posh say 1. zsh, dash, busybox say 2. Clang and gcc 
>>> both throw warnings about it, but both plus icc agree on 2.
>> Just curious: Is that x86-specific or is the result always the same on
>> other architectures, too ? Maybe there is something in ISO C1X/C99
>> which actually defines or recommends a specific compiler behaviour.

It is expressly forbidden by C99 (6.5.2:


>> Between the previous and next sequence point an object shall have its stored 
>> value modified at most once by the evaluation of an expression. Furthermore, 
>> the prior value shall be read only to determine the value to be stored.

As such, the expression in question here (x+=x=1) is undefined
>> Anders
>

_______________________________________________
ast-users mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-users

Reply via email to