it编程 > 编程语言 > C/C++

c++中的自增/自减操作方式

12人参与 2025-03-04 C/C++

基本概念

下面有这样一个问题,请先看代码:

#include <iostream>

void fun(int x) {
    std::cout << "parameter value: " << x << std::endl;
}

// 后缀递减示例
void postfix_example() {
    int value = 2;
    fun(value--);  // 传入2,之后value变为1
    std::cout << "after call: " << value << std::endl;
    
    // 输出:
    // parameter value: 2
    // after call: 1
}

// 前缀递减示例
void prefix_example() {
    int value = 2;
    fun(--value);  // 先将value减为1,然后传入1
    std::cout << "after call: " << value << std::endl;
    
    // 输出:
    // parameter value: 1
    // after call: 1
}

看到的上面的代码,func内部会输出什么?整个的执行顺序是什么?

原理解析

要回答上面的问题,要首先要搞明白一件事:

以前面的例子说明:

如果代码写成下面的样子大家都能看懂:

void postfix_example() {
    int value = 2;
    value--;  //这里value变成了1,
    fun(value);  // 传入1
    std::cout << "after call: " << value << std::endl;
    
    // 输出:
    // parameter value: 1
    // after call: 1
}

容易造成大家疑惑的地方就是:

如果自减/自减表达式作为函数参数,函数因为使用了这个表达式的值,而很多朋友对这个表达式的值具体是多少或者说传入函数的值是多少存在疑问。

现在在这里非常明确的告诉大家:

c++自增/自减表达式的值需要严格结合自增自减运算符的概念进行理解。

下面我举出下面的例子:

int value = 5;
std::cout<<value--<<std::end;  //输出5

int value = 5;
std::cout<<--value<<std::end;  //输出4


int value = 5;
std::cout<<value++<<std::end;  //输出5

int value = 5;
std::cout<<++value<<std::end;  //输出6

执行顺序

下面分析代码的执行顺序:

fun(value--);

这行代码的执行顺序是:

1.value-- 表达式被求值:

2.返回的临时值作为参数传递给 fun 函数

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

C++左值引用与指针的区别及说明

03-04

Qt实现发送HTTP请求的示例详解

03-03

C++实现回文串判断的两种高效方法

03-03

C语言的数据变量、常量、数据类型及使用示例详解

03-03

C++实现图片jpg格式变成16位565bmp格式

03-06

C++17文件系统库之std::filesystem 示例详解

03-07

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论