C语言= =,求高人

int x = 5, y = 7;
void swap ( )
{ int z ;
z = x ; x = y ; y = z ;
}
main ( )
{ int x = 3, y = 8;
swap ( ) ;
printf ( " %d , %d \n ", x , y ) ;
}
求解答过程,,

int x = 5, y = 7; //两个全局变量
void swap ( )
{ int z ;
z = x ; x = y ; y = z ; //将两个全局变量的值交换
}
main ( )
{ int x = 3, y = 8; //定义了两个局部变量。
swap ( ) ; //调用函数去交换了全局变量的值。
printf ( " %d , %d \n ", x , y ) ; //局部变量屏蔽了全局变量,这里输出的局部变量的值, 3,8.
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-22
int x = 5, y = 7; 这句是全局变量,如果在局部变量出现相同的变量名呢,就以局部变量的值为主,也就是说,在main函数中,x,y的又是另外一个x和y了,只不过名字和全局变量的名字相同而已。至于swap()中,根本没有起到什么作用!
第2个回答  2013-01-22
没看错的话,这个题目是在考关于变量作用域的问题
输出的是 3,8
在main()方法中调用的是局部的变量
第3个回答  2013-01-22
首先我不清楚你一开始int x = 5, y = 7;做什么?
然后你是想要换x和y的值是吧~
因为你用的是调用函数~所以行参影响不了是实参~输出就是3,8
如果想用调用函数调换的话·应该用指针
第4个回答  2013-01-22
int x = 5, y = 7;

// 记住,这个函数里用的x和y都不是main里面定义的,而是上面定义的,即x=5,y=7
void swap ( )
{
int z ;
z = x ;
x = y ;
y = z ;
}

main ( )
{ int x = 3, y = 8;
swap ( ) ;// 无论这个函数里如何翻江倒海,都不影响mian函数里的x和y的值
printf ( " %d , %d \n ", x , y ) ;// 因此,x和y依然输出它原来的值,即x为3,y为8
}
相似回答