int d=1; fun(int p) {int d=5; d+=p++; printf("%d",d); } main
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/28 15:38:33
int d=1; fun(int p) {int d=5; d+=p++; printf("%d",d); } main( ) {int a=3; fun(a); d+=a++;printf("
最后一句是 printf("%d\n",d);}
最后一句是 printf("%d\n",d);}
![int d=1; fun(int p) {int d=5; d+=p++; printf(](/uploads/image/z/8674811-35-1.jpg?t=int+d%3D1%3B+fun%28int+p%29+%7Bint+d%3D5%3B+d%2B%3Dp%2B%2B%3B+printf%28%22%25d%22%2Cd%29%3B+%7D+main)
d+=p++ 在这里跟d+=p 一样 ++在后面是先使用再自加.
同理,d+=a++; 也一样.
而fun里面的d跟main里面的d是两个完全不一样的东西.fun那个在函数里面定义,使用的范围只在函数里面,是local variable.
main里面那个是全局的d.
另外fun(int p)只传值,就是说,调用fun(a)之后,a的值不会改变.
BTW,为什么你不把程序编译一次然后得出结论呢?
从这个故事中得到的教训是:
1,多余的++不要用.
2,变量不要用这样的a,b,c,d,等简单又容易混淆的.要给个具体的名字.例如student,更好的话加上前序.如指针pStudent,全局变量gStudent等.
其实答案就是5+3 和1+3等于多少.
同理,d+=a++; 也一样.
而fun里面的d跟main里面的d是两个完全不一样的东西.fun那个在函数里面定义,使用的范围只在函数里面,是local variable.
main里面那个是全局的d.
另外fun(int p)只传值,就是说,调用fun(a)之后,a的值不会改变.
BTW,为什么你不把程序编译一次然后得出结论呢?
从这个故事中得到的教训是:
1,多余的++不要用.
2,变量不要用这样的a,b,c,d,等简单又容易混淆的.要给个具体的名字.例如student,更好的话加上前序.如指针pStudent,全局变量gStudent等.
其实答案就是5+3 和1+3等于多少.
int d=1; fun(int p) {int d=5; d+=p++; printf("%d",d); } main
void fun(int p) { int d=2; p=d++; printf("%d",p); } main() {
# include void fun (int p) { int d=2; p=d++; printf("%d",p);
#include int d=1; void fun (int p) { int d=5 ; d+=p++; print
fun(int k) {if(k>0)fun(k-1) printf("%d",k); } main() {int w=
Int a=1; Int *p; p=&a; printf(“%d\n”,*p); 和Int a=1; Int*p; *
main() { int m=12, n=34; printf("%d%d",m++,++n) printf("%d%d
{ int a[]={1,2,3,4,5,6}; int*p; p=a; printf("%d\n",*p); prin
main() {int a[5]={2,4,6,8,10},*p,**k; p=a; k=&p; printf("%d"
#include"stdio.h" void main() { int n=1; printf("%d,%d,%d\n"
#include void main() { int n=1; printf("%d,%d,%d",n,++n,n--)
main() { int x=10; int y=x++; printf("%d,%d\n",(x++,y),y++);