#include <stdio.h>int fun (int x)
{ int y;
y= X++;
return y;
}
main()
{ int k;
for(k=0; k<3; k++) { printf ( "%d,", fun(k)+k); k++;}
第一次k=0 fun(k)中y=x++ 先赋值再自加,y=0 输出0
k++后变成1,循环又一次k++ k=2
fun(k)中y=x++ 先赋值再自加,y=2 加上k输出4
k++变成3,,循环又一次k++ k=4跳出循环,所以输出0,4,
fun函数中y= X++;这里,执行过程是y = x; x++;所以return y的时候,y的值就是刚开始传进来的x的值。
在printf函数中,printf ( "%d,", fun(k)+k); k++;)这条语句的执行过程为:
k=0,k<3成立,执行 printf("%d,",fun(0)+0);显示0,,执行循环体中的k++;,此时 k = 1; 继续执行for的第三个表达式k++; k = 2,继续下一次循环;
k=2,k<3成立,执行 printf("%d,",fun(2)+2);显示4,,执行循环体中的k++; ,此时k = 3; 继续执行for的第三个表达式k++; k = 4,继续下一次循环;
k=4,k<3不成立,结束循环。
所以最后打印的是
0,4,