View Single Post
Old 12-16-2011, 12:22 PM   #12
Erriez
Human being with feelings
 
Join Date: Jun 2010
Location: The Netherlands
Posts: 177
Default

Run the example and watch the error variables:

Code:
@init

errors1 = 0;
errors2 = 0;
errors3 = 0;

memtest1 = 3;
memtest2 = (memtest1 + 6);
memtest3 = (memtest2 + 4); // <- I expect that this is correct, but its not. Why???

// Initialize memtests
memtest1[0] = 11;
memtest1[1] = 12;
memtest1[2] = 13;

memtest2[0] = 14;
memtest2[1] = 15;
memtest2[2] = 16;
memtest2[3] = 17;
memtest2[4] = 18;
memtest2[5] = 19;

// This code corrupts memtest2
memtest3[0] = 20;
memtest3[1] = 21;
memtest3[2] = 22;
memtest3[3] = 23;

// Verify memtests
(memtest1[0] != 11) ? errors1 += 1;
(memtest1[1] != 12) ? errors1 += 1;
(memtest1[2] != 13) ? errors1 += 1;

// Failures detected in memtest2:
(memtest2[0] != 14) ? errors2 += 1;
(memtest2[1] != 15) ? errors2 += 1;
(memtest2[2] != 16) ? errors2 += 1;
(memtest2[3] != 17) ? errors2 += 1;
(memtest2[4] != 18) ? errors2 += 1;
(memtest2[5] != 19) ? errors2 += 1;

(memtest3[0] != 20) ? errors3 += 1;
(memtest3[1] != 21) ? errors3 += 1;
(memtest3[2] != 22) ? errors3 += 1;
(memtest3[3] != 23) ? errors3 += 1;
The example results in errors2 = 2, because the init is incorrect:
memtest1 = 3;
memtest2 = (memtest1 + 6);
memtest3 = (memtest2 + 4); // <- This line must be (memtest1 + memtest2 + 4)!

Everybody refers to this doc: z=x[y]; or x[y]=z;
But this seems not to work for memtest3, because it overwrites memtest2.

Anyone else?
Erriez is offline   Reply With Quote