例如
int x = 10, y = 10,i;
for(i = 0; x > 8 ; y = i++ )
{
printf("%d ,%d" , x-- , y);
}
分析: 第一次循环判断条件是否成立,x = 10 >8成立。然后呢进入循环体内,x-- 这个操作一般是先取出原来的值x , 然后在对这个x值进行其它操作,
第一次输出 x = 10 ,y = 10 ,然而,此时的x已经变了,为 x-- ,即为9。执行完循环体后,则执行 y = i++ ;这个操作也是先把i的值给y ,所以呢 y = 0 ; 然后i++;
i= 1;
第二次循环,判断条件是否成立,x = 9>8 成立,进入循环体内,方法同上输出为x = 9 y = 0; 然后 x = 8 y = i++ ,y = 1 ,i = 2;
第三次循环 ,判断条件是否成立,x = 8 >8不成立,所以终止循环,
总体输出为: 10 10 9 0
但是对于
++i , --i 就不同了
int x = 10,y = 10 ,i;
for(i = 0 ; x > 8 ; y = ++i)
{
printf("%d %d" , --x , y);
}
第一次循环 判断条件 , x = 10 >8 成立,进入循环体内, --x ,先执行 -- 然后x = 9 , 输出 9 , 10 ,然后执行 y = ++i 先执行 ++i 此时 i为 1所以 y = 1
第二次循环 判断条件 x = 9 > 8 成立 ,进入循环体内,--x ,然后 x = 8 , 输出 8 , 1 ,然后执行 y = ++i ,此时i = 2 y = 2;
第三次循环 判断条件 x = 8>8 不成立,终止循环
总之输出 9,10 , 8,1