c+中的整数值赋值+; 我对C++很陌生,我有以下简单的程序: int main() { int a = 5,b = 10; int sum = a + b; b = 6; cout << sum; // outputs 15 return 0; } intmain() { INTA=5,b=10; 整数和=a+b; b=6; cout

c+中的整数值赋值+; 我对C++很陌生,我有以下简单的程序: int main() { int a = 5,b = 10; int sum = a + b; b = 6; cout << sum; // outputs 15 return 0; } intmain() { INTA=5,b=10; 整数和=a+b; b=6; cout,c++,C++,代码的执行自上而下是线性的 在初始化sum后,您可以修改b。此修改不会自动更改以前执行的代码。代码的执行自上而下是线性的 在初始化sum后修改b。此修改不会自动更改以前执行的代码。int sum=a+b;将添加a和b的结果写入新变量sum。它不会使sum成为始终等于r的表达式加法的结果。int sum=a+b;将添加a和b的结果写入新变量sum。它不会使sum成为始终等于加法结果的表达式。您更新了b值,但没有分配给sum变量 int main() { int a = 5,b =

代码的执行自上而下是线性的


在初始化
sum
后,您可以修改
b
。此修改不会自动更改以前执行的代码。

代码的执行自上而下是线性的


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

int sum=a+b;
将添加
a
b
的结果写入新变量
sum
。它不会使
sum
成为始终等于r的表达式加法的结果。

int sum=a+b;
将添加
a
b
的结果写入新变量
sum
。它不会使
sum
成为始终等于加法结果的表达式。

您更新了b值,但没有分配给sum变量

int main()
   {
      int a = 5,b = 10;
      int sum = a + b;
      b = 6;
      sum = a + b;
      cout << sum; // outputs 11
      return 0;
   }
intmain()
{
INTA=5,b=10;
整数和=a+b;
b=6;
总和=a+b;

cout您更新了b值,但没有分配给sum变量

int main()
   {
      int a = 5,b = 10;
      int sum = a + b;
      b = 6;
      sum = a + b;
      cout << sum; // outputs 11
      return 0;
   }
intmain()
{
INTA=5,b=10;
整数和=a+b;
b=6;
总和=a+b;

可能已经有答案了,但我觉得缺少了一些东西。。。 当你做这样的任务时

sum = a + b;
然后使用
a
b
值来计算总和。这就是为什么以后更改其中一个值不会更改
总和的原因。
但是,由于C++11,实际上有一种方法可以使代码按预期的方式运行:

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

auto sum = [&](){return a + b;};
声明一个lambda。我不能在这里给出lambda的独立解释,但只能给出一些手工提示。在这一行之后,当您编写
sum()
时,
a
b
用于计算总和。因为
a
b
是通过引用捕获的(这就是
的含义),
sum()
使用
a
b
的当前值,而不是声明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;
}
intsum(inta,intb){返回a+b;}
int main(){
INTA=5,b=10;
b=6;

std::cout已经有答案了,但我觉得缺少了一些东西。。。 当你做这样的任务时

sum = a + b;
然后使用
a
b
值来计算总和。这就是为什么以后更改其中一个值不会更改
总和的原因。
但是,由于C++11,实际上有一种方法可以使代码按预期的方式运行:

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

auto sum = [&](){return a + b;};
声明一个lambda。我不能在这里给出lambda的独立解释,但只能给出一些手工提示。在这一行之后,当您编写
sum()
时,
a
b
用于计算总和。因为
a
b
是通过引用捕获的(这就是
的含义),
sum()
使用
a
b
的当前值,而不是声明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;
}
intsum(inta,intb){返回a+b;}
int main(){
INTA=5,b=10;
b=6;

std::cout应该是这样的。您使用两个值来计算总和。因此a和b的值在其当前状态下使用(5和10)如果你改变了B的值,它对SUM没有任何影响。因为你提到C++,你可能会对我们感兴趣。它应该是怎样的。你使用两个值来计算和。所以A和B的值在它们当前的状态(5和10)中使用。如果您提到了C++,您可能会对我们的代码感兴趣。您可以在修改结果和时修改代码注释。谢谢。在修改所得结果时,您可以修改代码注释。谢谢,我不认为提到LAMBDAS会。帮助OP,考虑到他们自称缺乏基本的C++技能。@康拉德鲁道夫我明白你的意思,但是IHO LAMBDAS不应该留给有经验的程序员,而是C++学习的第一件事。当然我的回答对他并没有多大帮助,但这可能会让他做一些事情。reasearch@tobi303, “表达式模板精简版”"我喜欢这样,+1我不认为提到lambda会帮助OP,考虑到他们自称缺乏基本的C++技能。@康拉德鲁道夫我明白你的意思,但是IHO LAMBDAS不应该留给经验丰富的程序员,而是一个最重要的东西,学习C++。当然,我的回答对他并没有多大帮助,但是它可能会有很大的帮助。让他做些什么reasearch@tobi303“表达式模板lite”,我喜欢,+1