以下程序的输出结果是
m=4,k=4,i=5,k=5
#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=%dn",i,k);
}
以下程序的输出结果是
m=4,k=4,i=5,k=5
#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=%dn",i,k);
}
自己写了一下解析:
int k=0; 定义了一个全局变量k 赋值为0
接着从void main()函数看起,
首先定义了一个整数类型变量i 并将其赋值为4 即:int i=4;
然后调用fun()函数,传参i++,即:fun(i++) 然后说明一下i++ i++其实就是自增运算,每次相关语句执行结束后 自增1
调用了fun()函数,我们视角走向fun()函数部分
void fun(int m) i++传给了m 此时m=4
m+=k; 即m=m+k; m=4 k=0 所以 m=m+k=4
k+=m; 即k=k+m; m=4 k=0 所以k=k+m=4
然后printf输出 m=4,k=4 函数执行结束,k自增1 k=5 紧接着回到主函数调用结束 即fun(i++)语句结束,此时i自增1,i =5
所以在主函数输出i=5,k=5
希望对题主有所帮助,望采纳!!