繁体   English   中英

*b= *b+1 和 *b++ 之间的区别

[英]difference between *b= *b+1 and *b++

我正在尝试更改主函数中 a 和 b 的实际值。 但是当我使用 *b++ 来增加 b 的值时。 它不工作。

#include<iostream>

using namespace std;


int F(int *b,int *c ){
    *b++;
    *c++;

}
int main(){
    int a=1 , b=2;
    cout<<a<<" "<< b<<" ";
    F(&a, &b);

    cout<<a<<" "<< b;
}

但在第二种情况下,代码工作正常。

#include<iostream>

using namespace std;


int F(int *b,int *c ){
    *b = *b+1;
    *c = *c+1;

}
int main(){
    int a=1 , b=2;
    cout<<a<<" "<< b<<" ";
    F(&a, &b);

    cout<<a<<" "<< b;
}

*b++ 和 *b=*b+1 不一样吗?

它们不一样,第一个表达式只是由于operator precedence操作您的指针。

*b++;     // acts like *(b++)

这会增加指针,然后取消引用它。 你需要额外的括号

(*b)++;

根据https://en.cppreference.com/w/cpp/language/operator_precedence

++优先级高于*b ,所以*b++*(b++)

+优先级低于*b所以*b+1(*b) + 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM