我们何时应该使用 X和X
When should we use ++x and x++?
x和x 之间有什么区别?
我知道 X增量然后返回值。X 分配值然后添加。
,但我仍然不确定它是如何工作的以及何时使用任何一个。请帮忙。预先感谢
此代码是一个示例,其中无关紧要
int array[3];
for (int i = 0; i < 3; ++i)
array[i] = 0;
此代码完全相同
int array[3];
for (int i = 0; i < 3; i++)
array[i] = 0;
这是一些类似的代码,其中确实有所不同
int array[3];
int i = 0;
while (i < 3)
array[i++] = 0;
在此代码中,我们在增量之前使用i
的值,因此我们有效地进行array[0] = 0; array[1] = 0; array[2] = 0;
。没关系,但是这个版本不正确
int array[3];
int i = 0;
while (i < 3)
array[++i] = 0;
在这里,我们在增量后使用i
的值,因此我们有效地做array[1] = 0; array[2] = 0; array[3] = 0;
,这是一个错误,因为未分配array[0]
,并且更糟的是array[3]
仍然不是有效的数组元素。
x 是inf ins-increment&amp; X是预先提前的。说
X:
int x=3;
int y=++x; //Here result of y is 4 and x is 4
x :
int x=4;
int y=x++; //Here result of y is 4 and x is 5 After this line execution
何时使用预/帖子,它完全取决于您的编程逻辑。示例代码
int add(int x, int y)
{
return x + y;
}
int main()
{
int x = 5;
int value = add(x, ++x); // is this 5 + 6, or 6 + 6? It depends on what order your compiler evaluates the function arguments in
std::cout << value; // value could be 11 or 12, depending on how the above line evaluates!
return 0;
}
在GCC的情况下,您的输出将为12。
它并没有单独拥有太多差异。但是,此增量操作在您使用它们的方式和何处至关重要。例如,您正在尝试在索引'x'中分配一些值,然后该索引会增加。
说,在执行您的代码的某个点,x = 3;
如果您写信, 数组[x ] = value;
然后将"值"分配给数组[3]。因为如您所说,X 将分配值,然后添加。
在哪里,如果您写作, 阵列[ x] = value;
然后将"值"分配给数组[4]。因为正如您所说, x增量然后返回值。
因此,最终可以在编码器上使用此功能在合适的地方使用此功能。为了更清楚地观察它,我在下面发布了一个示例代码。
int dp[10];
int main(){
int x = 3;
dp[x++] = 4;
for(int i=1;i<10;i++){
cout<<i << " " << dp[i]<<endl;
}
cout<<"--------------------------"<<endl;
memset(dp, 0,sizeof dp);
x = 3;
dp[++x] = 4;
for(int i=1;i<10;i++){
cout<<i << " " << dp[i]<<endl;
}
return 0;
}
x是增量和提取
x 是提取的
如果用户定义的类正在实现其邮政增量返回类型,则为const。
但是,如果预先增量,将转录类型为参考。
因此,后增量会导致临时的创造和破坏。虽然前增量不会遭受此类额外费用。
x应尽可能选择用户定义的类。
- 何时应通过引用传递矢量参数而不是按值传递矢量参数?
- 何时应在构造函数参数中使用 const C++?
- 为什么或何时应在调用之前将可调用函数参数强制转换为右值?
- 点云库 (PCL) - 声明点云时何时应使用 ::P tr 的经验法则?
- 何时应使用 C++ 固定宽度整数类型,它们如何影响性能?
- 记录器何时应刷新
- 何时应使用 [[maybe_unused]]
- 何时应在现代C++中使用(非标头)源文件
- 何时应使用模板化参数与构造参数
- 关键部分或静音是否真的是成员变量,或者何时应成为成员变量
- 何时应存储指向函数的引用或指针?
- 何时应在Qt中将子对象声明为其父类的成员变量
- 何时应找到附加到模型的边界框的最小值和最大值
- 何时应删除默认的移动构造函数时令人困惑的事情
- 何时应使用make_heap与优先级队列
- 何时应通过常量引用传递运算符重载函数的参数
- 何时应防止隐式销毁?它是如何工作的
- 何时应使用std::atomic_compare_exchange_strong
- 何时应在非成员函数之前编写关键字 'static'?
- 什么是"is-implemented-in-terms-of"关系,何时应使用它?