c++中的整数值赋值

Integer value assignment in c++

本文关键字:赋值 整数 c++      更新时间:2023-10-16

我对c++很陌生,我有以下简单的程序:

 int main()
   {
      int a = 5,b = 10;
      int sum = a + b;
      b = 6;
      cout << sum; // outputs 15
      return 0;
   }

我总是收到输出15,尽管我已经将b的值更改为6。提前感谢您的回答!

从上到下执行你的代码是线性的。

初始化sum后修改b 。此修改不会自动更改先前执行的代码。

int sum = a + b;ab相加的结果写入新变量sum。它不会使sum成为一个总是等于加法结果的表达式。

已经有了答案,但我觉得缺少了一些东西…当你做一个像

这样的赋值时
sum = a + b;

则使用ab计算和。这就是为什么稍后更改其中一个值不会更改sum的原因。然而,自c++ 11以来,实际上有一种方法可以使您的代码按照您期望的方式运行:

#include <iostream>     
int main() {
    int a = 5,b = 10;
    auto sum = [&](){return a + b;};
    b = 6;
    std::cout << sum(); 
    return 0;
}

这将打印:

11
这条线

auto sum = [&](){return a + b;};

声明一个lambda。我不能在这里给出一个完整的lambda的解释,但只是一些简单的提示。在这一行之后,当您写入sum()时,将使用ab来计算总和。因为ab是通过引用捕获的(这就是&的含义),所以sum()使用ab的当前值,而不是声明lambda时的值。所以上面的代码或多或少相当于

int sum(int a, int b){ return a+b;}
int main() {
    int a = 5,b = 10;
    b = 6;
    std::cout << sum(a,b);
    return 0;
}

您更新了b值,但没有赋值给sum变量。

int main()
   {
      int a = 5,b = 10;
      int sum = a + b;
      b = 6;
      sum = a + b;
      cout << sum; // outputs 11
      return 0;
   }