c++中的整数值赋值
Integer value assignment in c++
我对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;
将a
和b
相加的结果写入新变量sum
。它不会使sum
成为一个总是等于加法结果的表达式。
已经有了答案,但我觉得缺少了一些东西…当你做一个像
这样的赋值时sum = a + b;
则使用a
和b
的值计算和。这就是为什么稍后更改其中一个值不会更改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()
时,将使用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;
}
您更新了b值,但没有赋值给sum变量。
int main()
{
int a = 5,b = 10;
int sum = a + b;
b = 6;
sum = a + b;
cout << sum; // outputs 11
return 0;
}
相关文章:
- 为"adjacent"变量赋值时出现问题
- C++中的赋值发生,尽管右侧出现异常
- 用C++中的sscanf赋值
- 为std::string的某个索引赋值
- 重载Singly Linked List中的赋值运算符
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- gtest_使用setargpointee在函数中赋值
- 非常量变量只读位置的赋值
- 字符串 c++ 的不明确整数赋值
- 有可能将多个整数赋值为一吗
- gcc 的 -Wconversion 是否与使用比 int 短的整数类型的复合赋值(+= 等)不兼容?
- 在sparcsolaris上使用gcc为长整型整数赋值
- 可以将lower_bound(来自c++ STL)的结果赋值给整数类型变量吗?
- 如何将多个整数赋值给另一个整数
- 为什么我必须将地址强制转换为整数以使其可赋值?
- 整数变量的值被神秘地重新赋值
- 如果我将带小数点的数字赋值给整数而不是浮点数会发生什么?
- 无法为整数类型的变量赋值
- 将函数的声明设置为0是什么意思?如何将整数赋值给函数?
- 将较小的整数类型赋值给较大的整数类型是否不安全?