C语言程序函数题

main()
{
int m =5;
fun(m/2); printf("m1=%d",m);
fun(m=m/2); printf("m2=%d",m);
fun(m/2); printf("m3=%d",m);
}
fun(int m)
{
m=m<=2?5:0;
return m;
}
结果求分析 谢谢

首先我们先解决两个问题,第一,fun()函数和main()函数中M值的问题,因为虽然两个参数的参数名相同但是它们的存储位置不同,所以在fun()函数中改变M值主函数中M的值不会改变(如果想改变它的值可以考虑用指针,具体的你自己看书吧)
第二,函数调用问题,fun(M/2)这种条用方式是很危险的,它在fun()函数中执行时的表达式是这样的 M/2=M/2<=2?5:0, 所以我建议你以后在你没有十足的把握的情况下不要使用。
第一步,主函数中M值没有变化 M1=5
第二步,主函数中M值变为2,fun函数中要仔细推一下才能知道,但是不影响主函数中M值,M2=2,有兴趣你可以去算算.
第三步,M的值无变化,所以为M3=2
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-26
fun是传值函数,fun不会改变int m =5;中m的值所以
printf("m1=%d",m);结果是初始值5
fun(m=m/2); 先执行m=m/2这样m的值就被改变printf("m2=%d",m);的结果是2
printf("m3=%d",m);的结果自然也变成2了本回答被提问者采纳
第2个回答  2012-05-26
fun(m/2)=fun(2)=5,但是没有赋值给m,所以m1=5;
fun(m=m/2)执行后m值变为2,同时m2=5;
m3=5.
相似回答