逗号运算符与加加减减

    int x,y,z;
    x=y=1;
    z= x++,y++,++y;

问执行之后x y z分别为多少?


要解决这个问题 先解决一个加加减减的问题

int  a = b++ ; //这个后置加加 会先把b赋值给a,然后再b加一
int  a= ++b; //这个前置加加 会先把b加一,然后b赋值给a

要解决这个问题 再解决一个逗号运算符的问题

int c= a,b;   //相当于 int c =a; int b;  
int c=(a,b);  //相当于 int c = a, c=b; 较聪明的编译器会直接,int c = b;

知道这两个规则之后,再看上面的问题

相当于 把 x赋值给z后 x加一,然后 y++ 与 ++y 都不赋值给z了。
故执行完后 z= 1 x=2 y=3;

你可能感兴趣的:(C-C++)