for ループの基本的な構造は似ていますが、
for(initialization; condition; increment or decrement)
しかし、そのコア部分では、「条件」部分はループの動作を制御するためだけに扱われます。したがって、他の 2 つの部分が構文的に正しい場合、コンパイラはエラーを生成しません。
はx+1
有効な C ステートメントであり、 の値はx
変化しないため、条件 [ x <= 100 => 0 <= 100
] が真であるという無限ループに陥ります。
繰り返しますが、x++
または両方を単独で使用した場合++x
と同様に扱います。x = x + 1
しかし、x++
実際にはポストインクリメント演算子であり、一方++x
はプレインクリメント演算子です。つまり++x
、 の値はx
最初にインクリメントされ、次に に割り当てられx
ます。一方、 の現在の値はx
ステートメント全体で使用され、x++
インクリメントx
されて新しい値が割り当てられます。次の例を見てください -
#include<stdio.h>
void main()
{
int x=5;
/* Post & Pre-Increment used independently */
x++;
printf("x : %d", x);
++x;
printf("\nx : %d", x);
/* Used with printf() statement */
printf("\nPre-increment of x: %d", ++x);
printf("\nPost-increment of x: %d", x++);
printf("\nPost-increment effect on x: %d", x);
}
出力:
x : 6
x : 7
Pre-increment of x: 8
Post-increment of x: 8
Post-increment effect on x: 9
私の説明で理解していただければ幸いです。それでも理解できない場合は、返信してください。