#include<stdio.h>
int k=0;
{
void fun(int m)
{
m+=k;k+=m;
printf("m=%d,k=%d " ,m,k++);
}
void main()
{
int i=4;
fun(i++);
printf("i=%d,k=%d\n",i,k);
}
#include<stdio.h>
int k=0;
{
void fun(int m)
{
m+=k;k+=m;
printf("m=%d,k=%d " ,m,k++);
}
void main()
{
int i=4;
fun(i++);
printf("i=%d,k=%d\n",i,k);
}
m=4,k=4 i=5,k=5
初始的 k = 0,i = 4
先执行fun(i++),这个是先赋值,再自加,即执行完fun函数后,i 再自加
在fun中,
m+=k; 这里面m是形参,m += 0 = 4 + 0 = 4;
k+=m; 这里面m是形参,k += 4 = 0 + 4 = 4;
printf("m=%d,k=%d " ,m,k++); 中 m=4,k++ 是先赋值再自加,所以输出的是 k=4,然后k的值就变成5了
该函数执行完之后,i 自加,所以 i=5 (注意,函数中 没有改变 i 的值,但 k 的值改变了,k=5)