Thread overview | |||||
---|---|---|---|---|---|
|
September 06, 2004 assignment in ? operator | ||||
---|---|---|---|---|
| ||||
[bug.d] void main() { int a, b, c; (a < 0) ? b = 1 : c = 2; } Compiler [dmd 0.101] outputs: bug.d(4): b = 1 is not an lvalue bug.d(4): #b = 1 is not an lvalue bug.d(4): #c is not an lvalue |
September 06, 2004 Re: assignment in ? operator | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ilya Zaitseff | Ilya Zaitseff wrote: > [bug.d] > > void main() > { > int a, b, c; > (a < 0) ? b = 1 : c = 2; > } > > Compiler [dmd 0.101] outputs: > > bug.d(4): b = 1 is not an lvalue > bug.d(4): #b = 1 is not an lvalue > bug.d(4): #c is not an lvalue http://www.digitalmars.com/d/expression.html AssignExpression: ConditionalExpression ConditionalExpression = AssignExpression ConditionalExpression += AssignExpression ConditionalExpression -= AssignExpression ConditionalExpression *= AssignExpression ConditionalExpression /= AssignExpression ConditionalExpression %= AssignExpression ConditionalExpression &= AssignExpression ConditionalExpression |= AssignExpression ConditionalExpression ^= AssignExpression ConditionalExpression ~= AssignExpression ConditionalExpression <<= AssignExpression ConditionalExpression >>= AssignExpression ConditionalExpression >>>= AssignExpression ConditionalExpression: OrOrExpression OrOrExpression ? Expression : ConditionalExpression So your code means ((a < 0) ? b = 1 : c) = 2; You need to tell it otherwise. Stewart. -- My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit. |
September 07, 2004 Re: assignment in ? operator | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stewart Gordon | Stewart Gordon wrote:
> Ilya Zaitseff wrote:
>
>> [bug.d]
>> void main()
>> {
>> int a, b, c;
>> (a < 0) ? b = 1 : c = 2;
>> }
>> Compiler [dmd 0.101] outputs:
>> bug.d(4): b = 1 is not an lvalue
>> bug.d(4): #b = 1 is not an lvalue
>> bug.d(4): #c is not an lvalue
>
> http://www.digitalmars.com/d/expression.html
>
> AssignExpression:
> ConditionalExpression
> ConditionalExpression = AssignExpression
> ConditionalExpression += AssignExpression
> ConditionalExpression -= AssignExpression
> ConditionalExpression *= AssignExpression
> ConditionalExpression /= AssignExpression
> ConditionalExpression %= AssignExpression
> ConditionalExpression &= AssignExpression
> ConditionalExpression |= AssignExpression
> ConditionalExpression ^= AssignExpression
> ConditionalExpression ~= AssignExpression
> ConditionalExpression <<= AssignExpression
> ConditionalExpression >>= AssignExpression
> ConditionalExpression >>>= AssignExpression
>
> ConditionalExpression:
> OrOrExpression
> OrOrExpression ? Expression : ConditionalExpression
>
> So your code means
>
> ((a < 0) ? b = 1 : c) = 2;
>
> You need to tell it otherwise.
>
> Stewart.
>
You right. Thanks!
|
Copyright © 1999-2021 by the D Language Foundation