* vs ++ приоритетные проблемы

Приоритет:
приоритет ++ и * имеет одинаковый приоритет, а операции выполняются справа налево.
Postfix++ имеет более высокий приоритет, чем *, и вычисляется слева направо, но postfix++ все равно необходимо дождаться завершения операции выражения перед ++.

Различные ++ и *

#include <iostream>
using namespace std;

int main()
{
    
    
    int arrays[]{
    
    12,34,32,69,43};
    int * p=arrays;

    //从右向左进行,先++,再取值,就是34
    cout<<"*++p: "<<*++p<<endl;
    //从右向左进行,先取值,再++,就是将arrays[1]变成35
    cout<<"++*p: "<<++*p<<endl;

    //后置++优先级高但是要表达式结束后再++,就是先取值再++
    //由于优先级的作用,这里++不是对取值之后的*p,而是对p进行++,指针下移
    cout<<"*p++: "<<*p++<<endl;
    //和上面的那个式子一样,就是先取值,再++指针下移,
    cout<<"*(p++): "<<*(p++)<<endl;

    //括号括住的优先级最高,先取值再++,将array[3]变成70,但是输出结果还是69
    cout<<"(*p)++: "<<(*p)++<<endl;

    cout<<"*p:"<<*p<<endl;

    return 0;
}


Выход:

*++p: 34
++*p: 35
*p++: 35
*(p++): 32
(*p)++: 69
*p:70

おすすめ

転載: blog.csdn.net/mantou_riji/article/details/123568064#comments_28924474