无法理解为什么*a++不起作用而*a=*a+1是?

为什么我使用*a++它时不影响我的答案并给我警告。但是它*a=*a+1在下面的代码中工作正常吗?

#include <bits/stdc++.h>
using namespace std;

void incrementptr(int* a)
{
    //*a++;
    *a=*a+1;
}

int main()
{
    int a=10;
    cout<<a<<endl;
    // increment(a);
    // cout<<a<<endl;

    incrementptr(&a);
    cout<<a<<endl;
    
    return 0;
}

回答

运算符优先级:后缀的++优先级高于*,因此*a++被解析为*(a++)。它递增指针和取消引用a(递增之前的值)并且表达式的结果未使用。


我想这只是为了练习指针,但您的代码中不应该有任何指针。仅当 anullptr是函数的有效输入时才使用指针作为参数。否则传递一个引用(当你不需要增量前的值时使用 preincrement ,它不会对 an 产生影响int,但通常 post 可能比 pre 更昂贵):

void increment(int& a) { ++a; }


以上是无法理解为什么*a++不起作用而*a=*a+1是?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>