[英]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.