digitalmars.D.bugs - assignment in ? operator
- "Ilya Zaitseff" <sark7 mail333.com> Sep 05 2004
- Stewart Gordon <smjg_1998 yahoo.com> Sep 06 2004
- "Ilya Zaitseff" <sark7 mail333.com> Sep 06 2004
[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
Sep 05 2004
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.
Sep 06 2004
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!
Sep 06 2004








"Ilya Zaitseff" <sark7 mail333.com>