I understand why the first print statement outputs -3 5 8 2
. But the second print output is 4 5 8 0
I know that 5
and 8
are because their respective values remain unchanged, but I do not know How does w
value 4
and z
get the value of 0
I think the pointers in my The understanding can be a bit fuzzy.
#include & lt; Stdio.h & gt; Zero mysterious (int * a, int * b, int * c) {* a = * c; * B = * b + * a; * C = * a - * b; } Int main () {int w = 5; Int x = 1; Int y = 3; Int z = 2; Mysterious (and x, and y, and y); Printf ("% d% d% d% d \ n", w, x, y, z); Mysterious (& amp; w; & amp; w; & amp; z;); Printf ("% d% d% d% d \ n", w, x, y, z); Return 0; }
If you translate the steps inside the mysterious
Do * a
, * b
, * c
going w
, w
, Z
comes out of it respectively:
w = z; W = w + w; Z = w - w;
Step through: z
was 2
; Therefore, w
becomes 2
, then 4
; And finally z
becomes 4 - 4
which is 0
.
No comments:
Post a Comment