c++ - 为什么这段代码返回 0 和 1?

标签 c++ c postfix-operator

我知道使用变量后后缀运算符增量值。 但在这种情况下,这是一个有效的陈述吗?因为看起来我是在返回语句之后修改变量。

#include <iostream>

using namespace std;

int val = 0;

int foo()
{
        return val++;
}

int main()
{
        cout<<foo();
        cout<<endl<<val;
}

任何详细说明都会有所帮助。

最佳答案

这么说return val++首次返回val然后递增它不完全正确。表达式val++增加 val 的值,但评估为旧值 val .

你可以想到后缀++作为使用辅助变量来保存旧值的函数:

int temp = val; // save old value to temp
++val;          // increment actual value
return temp;    // evaluate to old value

关于c++ - 为什么这段代码返回 0 和 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245938/

相关文章:

c++ - Array 类的运算符重载

c - 如何向 ISAAC 随机数生成器提供种子

c - 如何正确分配新的字符串值?

c++ - 解析命令行参数时出现问题

c++ - Opencv Mat转换为QByteArray

c - 执行字符串操作时出现一些错误

c - 如何在循环内增加 while 循环的计数器?

java - 为什么jshell显示这个数字?

c++ - 将 int 转换为 const wchar_t*