下列程序执行后输出的结果是【1】 .
#include<stdio.h>
int d=1;
void fun(int p)
{ int d=5;
d+=p++;
printf("%d",d);
}
void main()
{ int a=3;
fun(a);
d+=a++;
printf("%d\n",d);
}
=======(答案1)=======
84
函数里面的那个输出没有换行啊
#include<stdio.h>
int d=1;
void fun(int p)
{
int d=5;
d+=p++;
printf("%d",d);
}
void main()
{
int a=3;
fun(a);
d+=a++;
printf("%d\n",d);
}
挺有意思的一道题目
看main方法,int a=3,然后执行函数fun(a),在函数内int d=5,d+=p++;可以额修改成两句 d=d+p; p++;d=5+3=8;p++ p=4;因为只是值引用而不是地址引用,所以不修改入参a的值,然后打印d,8 接着再看main d+=a++,这里的d是全局的d,不是fun里的局部d,所以d+=a++;执行完后d=4;a=4,然后打印d和\n
所以答案是84然后换行
fun()函数输出8,d+=p++;==> 此时d=5,p=3, d = 5+3 = 8
主函数中:d为全局变量,d=1,a = 3, d+=a++ ==> d = 1+3 =4
所以最终输出: 84