c - difference between *y++ and ++*y? -


i'm confused in how code executed. suppose have

int x=30,*y,*z; y=&x; 

what difference between *y++ , ++*y? , output of program?

#include<stdio.h> int main(){      int x=30,*y,*z;     y=&x;     z=y;     *y++=*z++;    x++;    printf("%d %d %d ",x,y,z);    return 0; } 

the expression x = *y++ in effects same as:

x = *y; y = y + 1; 

and if expression *y++; (without assignment) nothing same y++;, y start pointing next location after increment.

second expression ++*y means increment value pointed y same as: *y = *y + 1; (pointer not incremented) better clear answer first question:

suppose code is:

int x = 30, *y; int temp; y = &x;  temp = *y++; //this same as:  temp = *y;  y = y + 1; 

first *y assigned temp variable; hence temp assigned 30, value of y increments 1 , start point next location after location of x (where no variable present).

next case: suppose code is:

int x = 30, *y; int temp; y = &x;  temp = ++*y;  //this same *y = *y + 1; temp = *y; 

first value of *y increments 30 31 , 31 assigned temp (note: x 31).

next part of question (read comments):

int x = 30, *y, *z;  y = &x;       // y ---> x , y points x z = y;        // z ---> x , z points x *y++ = *z++;  // *y = *z, y++, z++ ,                // x = x, y++, z++ x++;          // increment x 31 

Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

css - Firefox for ubuntu renders wrong colors -