繁体   English   中英

C 中的数组增量类型 - array[i]++ vs array[i++]

[英]Array increment types in C - array[i]++ vs array[i++]

array[i]++array[i++]之间有什么区别,其中数组是一个 int array[10]

int a[] = {1, 2, 3, 4, 5};
int i = 1; // Second index number of the array a[]
a[i]++;
printf("%d %d\n", i, a[i]);
a[i++];
printf("%d %d\n", i, a[i]);

输出

1 3
2 3

a[i]++增加索引i处的元素,它不会增加i 并且a[i++]增加i ,而不是索引i处的元素。

  • array[i]++增量的值array[i] 表达式在增加之前计算为array[i]
  • array[i++]增加i的值。 i递增之前,表达式的计算结果为array[i]

一个插图。

假设array包含三个整数,0、1、2,并且i等于 1。

  • array[i]++array[1]更改为 2,计算结果为 1 并使i等于 1。
  • array[i++]不修改array ,计算结果为 1 并将i更改为 2。

您在此处使用的后缀运算符计算表达式的值,然后再递增。

array[i]++表示( *(array+i) )++ --> 增加值。

array[i++]表示*( array + (i++) ) --> 增加索引。

这里Array[i]++增加元素array[i] ,但array[i++]增加i值,这会影响或改变数组元素的指示(即它指示 array 之后的array[i]的下一个元素array[i] )。

假设我们有这个例子, array[i++] = x[m++] 这意味着首先设置array[i] = x[m]然后增加像i + 1 , m + 1这样的索引。

这里array[i++]增加了索引号。
相反, array[i]++递增i索引的数据值。

代码片段:

#include <iostream>
using namespace std;

int main() 
{
    int array[] = {5, 2, 9, 7, 15};

    int i = 0;

    array[i]++;
    printf("%d %d\n", i, array[i]);

    array[i]++;
    printf("%d %d\n", i, array[i]);

    array[i++];
    printf("%d %d\n", i, array[i]);

    array[i++];
    printf("%d %d\n", i, array[i]);

    return 0;
}
#include<iostream>
using namespace std;
int main()
{
    int arr[]={1,2,37,40,5,7};
    int i = 3;
    arr[i]++;
    cout<<i<<" "<<arr[i]<<endl;
    arr[i++];
    cout<<i<<" "<<arr[i]<<endl;
    return 0;
}

输出:

3 41
4 5

在这个例子中 i = 3 所以,arr[3]= 40 然后它将值 40 增加到 41。所以 arr[i]++ 增加这个特定索引的值,a[i++] 首先增加索引然后给出该指数的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM