Re: Increment and AddTo
- To: mathgroup at smc.vnet.net
- Subject: [mg64568] Re: [mg64551] Increment and AddTo
- From: "Erickson Paul-CPTP18" <Paul.Erickson at Motorola.com>
- Date: Thu, 23 Feb 2006 00:34:04 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Well I think I can explain it, but ... ++i is executed twice as indicated below in bold-red. The first time as part of determining the value of the index to find the value to be added to 5 (since pre-fix, I think this is correct) and then a second time as part of the expression to find where the sum should be assigned to in the indexed string (I'd assume this execution is a surprise). Therefore, it is effectively start i=0, autoincrement i, find the v[i] or v[1], add to 5, now to assign back first autoincrement i, then assign 6 back to v[2]. Paul Using trace. Clear [ i, v ] Trace[ i = 0; v = {1, 2, 3}; v[[++i]] += 5; v; i ] {i=0;v={1,2,3};vP++iT+=5;v;i,{i=0,0},{v={1,2,3},{1,2,3}},{vP++iT+=5,{{v, {1,2,3}},{++i,{i,0},{i=1,1},1},{1,2,3}P1T,1},{{1+5,6},vP++iT=6,6},6},{v, {1,6,3}},{i,2},2} -----Original Message----- From: dh [mailto:dh at metrohm.ch] To: mathgroup at smc.vnet.net Subject: [mg64568] [mg64551] Increment and AddTo Hello, can anybody explain the following behaviour: $Version = 5.1 for Microsoft Windows (October 25, 2004) i = 0; v = {1, 2, 3}; v[[++i]] += 10; v i gives {1,11,3} 2 i has been incremented by 2! i++ is even more interesting: i = 1; v = {1, 2, 3}; v[[i++]] += 10; v i gives: {1,11,3} 2 again i is incremented by 2, but for the sum v[[1]] is used and stored in v[[2]] Further: i = 0; v = {1, 2, 3}; ++v[[++i]] ; v i gives: {1,2,3} 2 Again i has been incremented by 2, but v has not been touched at all. Daniel