今日、ポストインクリメントとプリインクリメントに関する興味深いステートメントを見てきました。次のプログラムを検討してください-
#include <stdio.h>
int main(){
int x, z;
x = 5;
z = x++ - 5; // increase the value of x after the statement completed.
printf("%d\n", z); // So the value here is 0. Simple.
x = 5;
z = 5 - ++x; // increase the value of x before the statement completed.
printf("%d\n", z); // So the value is -1.
// But, for these lines below..
x = 5;
z = x++ - ++x; // **The interesting statement
printf("%d\n", z); // It prints 0
return 0;
}
その興味深い声明で実際に何が起こっているのでしょうか? ポストインクリメントは、ステートメントが完了した後に x の値を増やすことになっています。次に、そのステートメントの最初の xの値は 5 のままです。また、プレインクリメントの場合、2 番目の xの値は6 または 7 にする必要があります (不明)。
z に 0 の値を与えるのはなぜですか? 5 - 5でしたか、それとも6 - 6でしたか? 説明してください。