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

时间:2011-09-29 09:30:41

标签: c arrays

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

7 个答案:

答案 0 :(得分:16)

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

插图。

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

  • array[i]++array[1]更改为2,评估为1并使i等于1。
  • array[i++]不会修改array,评估为1并将i更改为2.

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

答案 1 :(得分:15)

int a[] = {1, 2, 3, 4, 5};
int i = 1;
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处的元素,但不会增加ia[i++]增加i,而不是索引i的元素。

答案 2 :(得分:4)

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

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

答案 3 :(得分:1)

这里Array [i] ++增加元素数组的值[i] 但是array [i ++]会增加i值,该值会影响或改变数组元素的指示,即它表示array [i]之后的数组的nxt元素。

答案 4 :(得分:0)

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

代码段:

#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;
}

答案 5 :(得分: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] ++增加该特定索引的值,并首先增加[i ++]   递增索引,然后给出该索引的值。

答案 6 :(得分:0)

假设我们有一个示例 2020-04-25 21:45:03.945 4722-4724/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xa8 in tid 4724 (Binder:4722_2) --------- beginning of system 2020-04-25 21:45:06.581 4726-4726/? E/memtrack: Couldn't load memtrack module (No such file or directory) 2020-04-25 21:45:06.581 4726-4726/? E/android.os.Debug: failed to load memtrack module: -2 2020-04-25 21:45:06.583 4716-4716/? E/memtrack: Couldn't load memtrack module (No such file or directory) 2020-04-25 21:45:06.583 4716-4716/? E/android.os.Debug: failed to load memtrack module: -2 2020-04-25 21:45:07.949 4746-4746/? E/memtrack: Couldn't load memtrack module (No such file or directory) 2020-04-25 21:45:07.949 4746-4746/? E/android.os.Debug: failed to load memtrack module: -2 2020-04-25 21:45:08.585 4755-4755/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.myapplication, PID: 4755 java.lang.RuntimeException: Unable to get provider android.content.SearchRecentSuggestionsProvider: java.lang.IllegalArgumentException: Provider not configured at android.app.ActivityThread.installProvider(ActivityThread.java:5814) at android.app.ActivityThread.installContentProviders(ActivityThread.java:5403) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5342) at android.app.ActivityThread.-wrap2(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) Caused by: java.lang.IllegalArgumentException: Provider not configured at android.content.SearchRecentSuggestionsProvider.onCreate(SearchRecentSuggestionsProvider.java:305) at android.content.ContentProvider.attachInfo(ContentProvider.java:1751) at android.content.ContentProvider.attachInfo(ContentProvider.java:1726) at android.app.ActivityThread.installProvider(ActivityThread.java:5811) at android.app.ActivityThread.installContentProviders(ActivityThread.java:5403)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5342)  at android.app.ActivityThread.-wrap2(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:154)  at android.app.ActivityThread.main(ActivityThread.java:6077)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)  2020-04-25 21:45:09.728 1318-1318/? E/EGL_emulation: tid 1318: eglCreateSyncKHR(1901): error 0x3004 (EGL_BAD_ATTRIBUTE) 。这意味着首先设置array[i++] = x[m++],然后增加索引array[i] = x[m]i + 1