首页 > 试题广场 >

正确输出的是()intx=5,y=7;voidswap(){

[单选题]
正确输出的是()
intx=5,y=7;
void swap ()
{    int z;
     z=x;
     x=y;
   y=z
}
int main (void)
{   
    int x=3,y=8;   
    swap();
    printf ("%d,%d\n",x,y) ;
}

  • 3,8
  • 8,3
  • 5,7
  • 7,5
注意看这个swap方法是没有参数的,而且swap的实现是实现了全局变量x和y的交换,而在主方法中使用swap,虽然创建了x和y变量。但是执行swap方法时不经过主方法中的局部变量,因为输出的还是未交换的局部变量
发表于 2020-10-22 10:10:15 回复(0)
swap函数只是做交换,并没有返回交换后的值
发表于 2021-07-26 09:55:39 回复(0)
学到了,细节重要啊


编辑于 2020-10-04 14:47:57 回复(0)
swap()只是交换了全局定义的x和y,对主函数重新定义的x,y不影响。注意看x,y定义的位置。
发表于 2020-09-18 20:01:17 回复(0)
陷阱题,没主意参数传递。
发表于 2020-11-07 20:51:03 回复(0)
很强,是朕年轻了!
发表于 2021-01-07 15:47:47 回复(0)
**,swap();根本就没传参
编辑于 2020-12-05 19:44:38 回复(0)
回过头来看才发现swap()是没有参数的,所以就和main中的局部变量x,y没有关系,只是改变了全局变量x,y(x=5,y=7 =>x=7,y=5)
发表于 2020-12-04 13:02:24 回复(0)
上当了,没注意到swap()没传参数
发表于 2020-12-03 23:41:17 回复(0)
**,真的是陷阱,没有传参,用的是全局变量
发表于 2020-11-27 04:55:55 回复(0)
这里我犯了一个错误:没有全面考虑变量的作用域
发表于 2020-11-22 11:32:24 回复(0)
细节很重要啊,完全忽略了
发表于 2020-10-22 11:04:43 回复(0)
全局变量与局部变量同名是,局部可以覆盖全局,或者说就近原则。
发表于 2020-10-20 16:03:30 回复(0)
这题考查的应该是值传递吧,调用交换方法后,实参的值并不会改变
发表于 2020-10-13 20:10:16 回复(0)
不是java么
发表于 2020-09-22 09:57:12 回复(0)
题目看错了
发表于 2020-09-19 16:34:18 回复(0)