📌  相关文章
📜  在 C++ 中作为函数参数传递时的增量运算符行为(1)

📅  最后修改于: 2023-12-03 15:07:37.703000             🧑  作者: Mango

在 C++ 中作为函数参数传递时的增量运算符行为

在 C++ 中,增量运算符包括前置递增运算符 ++i 和后置递增运算符 i++。在函数参数传递时,这两种运算符的行为不同,需要注意。

前置递增运算符

前置递增运算符会在自身值递增后返回该值。因此,当作为函数参数传递时,函数内部操作的是原变量的值。例如:

void foo(int& x) {
    ++x;
}

int main() {
    int y = 1;
    foo(y);
    std::cout << y; // 输出 2
}

在上述示例中,foo 函数将 y 增加了 1,因此在 main 函数中输出的值为 2。

后置递增运算符

后置递增运算符在递增前返回原值的副本,递增后自身值发生改变。因此,当作为函数参数传递时,函数内部操作的是副本的值。例如:

void bar(int& x) {
    x++;
}

int main() {
    int y = 1;
    bar(y++);
    std::cout << y; // 输出 2
}

在上述示例中,bar 函数将 y 的副本增加了 1,因此在 main 函数中输出的值为 2。

需要注意的是,如果将后置递增运算符放在变量名之前,则会在使用变量之前将其递增。例如:

int main() {
    int y = 1;
    bar(++y);
    std::cout << y; // 输出 2
}

在上述示例中,bar 函数将 y 递增后传递给函数,因此在 main 函数中输出的值为 2。