我想知道array[i]++
和array[i++]
之间有什么区别,其中数组是一个int array[10]
?
答案 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
处的元素,但不会增加i
。 a[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
。