可能性の重複:
Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)Cポインタインクリメントエッジケースと評価順序
0と1
#include <stdio.h>
int main(void) {
int array[] = {3,2,1,0};
int *p = array;
printf("%d\n", p++[*p++]);
printf("%d\n", *p);
return 0;
}
アウトCコード印刷の次の作品私はp[i] == *(p + i)
を知っていますが、その場合、p-表現またはi-発現がev最初にaluated。私がclang
とgcc
で得た結果から、i式が最初に評価されることがわかりましたが、私の教授は*(p + i)
という評価順序はCで定義されていないと言っていますか?
質問:このプログラムの動作は、どの標準でも定義されているか、それともコンパイラに依存していますか?
どうやらこの質問は1日に1回お願いします。 – Lundin
@Lundin私はそれがより頻繁に起こったと言えるでしょう。 –