我们何时应该使用 X和X

When should we use ++x and x++?

本文关键字:何时应 我们      更新时间:2023-10-16

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应尽可能选择用户定义的类。