簡體   English   中英

使用簡寫符號對 C 中的數組進行增量排序和求值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM