解释增量运算符
Explain increment operator
为什么运行代码后i = 11和j = 10的值?
#include<iostream>
int main()
{
//Put your code here
int i = 10;
int j = i++;
std::cout << i << "n";
std::cout << j << "n";
return 0;
}
int i = 10;
将i
初始化为 10。
int j = i++;
初始化j = i;
(j = 10
(,并在计算表达式后应用后增量作为副作用,在到达std::cout << i << "n";
语句之前进行i = 11;
。
这是发生的情况:i = 10; j=10; i++;
你先唏嘘 j 勇气,然后再增加我的勇气。
int j = i++;
它是post-increment
运算符。它复制旧的值i
,即在i
递增之前。所以在增量之前,i
包含10
.所以10
会被复制到j
中,然后i
的值会增加1
。这一切都发生在一条线上。因此,当您在下一行中打印出j
的值时,j
变得10
,i
变得11
更新的值。
int j = ++i;
这是pre-increment operator
.它与前一个的唯一区别是i
的新值被复制到j
中(这意味着,i 首先递增,然后发生j=i
赋值(。如果在下一行中打印出来,这将为i
和j
打印11
。
相关文章:
- 为什么比较运算符如此快速
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 使用C++中的模板和运算符重载执行矩阵运算
- 请解释"函数1(p1,p2,p3);"的输出
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 增量运算符与后缀混淆
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 一个关于在C++中重载布尔运算符的问题
- 隐式不是带有枚举解释的运算符 (!)?
- 有人可以用"显式运算符 const GUID_t&() const"来解释成员函数的函数吗?
- 特征运算符如何在内部解释为 MKL 函数?
- 有人可以解释速记赋值运算符的实际工作原理吗?
- 解释增量运算符
- 编译器将输出的流运算符<<解释为用于按位左移的二进制运算符<<
- 任何机构都可以在运算符重载中解释这行代码
- 通过指针访问数据(重新解释转换)与 .或 ->运算符
- &= 必须始终解释为运算符吗?
- 如何用二元运算符的比较结果来解释条件
- 解释了c++中不同情况下的箭头和点运算符
- 在代码片段中解释 C++ 中":"运算符的使用"int i:2;"