[英]Order if Increment and Evaluation of Array in C with Shorthand Notation
我編寫了一個小代碼來理解數組的增量順序和評估,並在數組中使用簡寫增量表示法:
#include <stdio.h>
int j;
int array[500];
void main() {
array[0]=3;
array[1]=3;
array[2]=3;
while (j<10){
array[j++]=7;
printf("value of array[j] after %d\n",array[j]);
}
}
似乎增量發生在數組評估“之后”,因此array[j]
被分配7
,然后j
增加。 在這種速記array[j++]
符號中,評估是否總是發生在增量之前?
后綴++
的結果是其操作數的原始值,並且操作數作為副作用遞增。
這與前綴++
運算符相反:
array[++j]=7;
它計算其操作數的遞增值,並且操作數再次遞增作為副作用。
在這兩種情況下,遞增的副作用都不能保證在下一個序列點之前發生,松散地說就是下一個語句。
這意味着如果您嘗試執行以下操作:
x = ++j + j;
它會導致未定義的行為,因為j
在同一語句中被讀取和寫入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.