help-octave
[Top][All Lists]

## a=0; a([1,1])++ -> a == 2

 From: John W. Eaton Subject: a=0; a([1,1])++ -> a == 2 Date: Wed, 2 Aug 2000 13:51:01 -0500 (CDT)

```On  2-Aug-2000, Etienne Grossmann <address@hidden> wrote:

|   sorry if the answer to my question is a clear-cut "no" or if it has
|
|   Wouldn't it make sense to have the code
|
|        a=0; b = a([1,1])++ ;
|
|   be equivalent to either
|
|        a=0; b=a([1,1]); b++; for i in [1,1], a(i)++ ; end
|
|        yielding       a == 2, b == [1;1]

Hmm.  I can agree with what is inside the loop, but not the b++ that
is outside.  The way a statement like

b = a([1,1])++

is evaluated requires that the operation on the right hand side
produce a value, and then that result is copied to the left hand side
of the assignment.  So, what should the value of a([1,1])++ be?  Since
a([1,1]) references the same location twice, I suppose it is
reasonable to think that it should increment twice, but it also seems
reasonable that it should only increment once, since you have one `++'
operator operating on one location.  It also makes sense when you

a = 0; a([1,1])++

is equivalent to

a = 0; t = a([1,1]); a([1,1]) += 1; t

or

a = 0; t = a([1,1]); a([1,1]) = a([1,1]) + 1; t

With the value of the expression being `t'.

|   or
|        a=0; b=zeros(size(a)); for i in [1,1], b(i) = a(i)++ ; end
|
|        yielding       a == 2, b == [1;2]

I don't think this is the correct interpretation of what this code
would currently do in Octave.  With my current sources (approximately
the same as the latest 2.1.x release), I see

octave:11> a=0; b=zeros(size(a)); for i = [1,1], b(i) = a(i)++ ; end, a, b
a = 2
b = 1

|   The current behavior yields :
|
|       a == 1, b == [1;1]

Hmm.  Not what I see:

octave:9> a=0; b = a([1,1])++; a, b
a = 1
b =

0  0

Are you using some different version of Octave that behaves
differently?

jwe

-----------------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.che.wisc.edu/octave/octave.html
How to fund new projects:  http://www.che.wisc.edu/octave/funding.html
Subscription information:  http://www.che.wisc.edu/octave/archive.html
-----------------------------------------------------------------------

```