Explanation of ++val++ and ++*p++ in C

前端 未结 4 1848
Happy的楠姐
Happy的楠姐 2021-01-02 23:07
int val = 5;

printf(\"%d\",++val++); //gives compilation error : \'++\' needs l-value

int *p = &val;
printf(\"%d\",++*p++); //no error

Could

4条回答
  •  有刺的猬
    2021-01-02 23:43

    int j = ++val++; //gives compilation error

    That because you cannot pre-increment an rvalue. ++val++ is interpreted as ++(val++) because post-increment operator has higher precedence than pre-increment operator. val++ returns an rvalue and pre-increment operator requires its operand to be an lvalue. :)

    int k = ++*p++; //no error

    ++*p++ is interpreted as ++(*(p++)), which is perfectly valid.

提交回复
热议问题