首页 > 试题广场 >

执行下面程序,正确的输出是()。 intx=5,

[单选题]
执行下面程序,正确的输出是()。
int x=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函数用的是全局的x和y,但是不会发生交换 注意:printf函数在进行输出的时候是就近原则的,所以输出的x和y是main函数里面的,而不是全局的x和y
发表于 2019-03-21 09:18:29 回复(4)
不会交换,
swap()会用全局变量
局部变量进不去函数作用域
#include <iostream>
#include<stdio.h>
using namespace std;
int x=2;
int y=3;
void swap()
{    int z=0;
     z=x;
     x=y;
     y=z;
  printf ("%d,%d\n",x,y);
}
int main(void)
{

  
    int x=3,y=8;   
    swap();
   printf ("%d,%d\n",x,y);
}
3,2
3,8


发表于 2018-09-30 20:05:58 回复(0)
int x=5,y=6;
void swap(){
    int z;
    z=x;x=y;y=z;
}

int main(){
    cout<<x<<' '<<y<<endl;
    swap();
    cout<<x<<' '<<y<<endl;
    int x =3,y=8;
    cout<<x<<' '<<y<<endl;
    swap();
    cout<<x<<' '<<y<<endl;
}
5 6
6 5
3 8
3 8
swap交换的是全局变量x,y。但是如果在main函数里定义了x,y就是局部变量,当全局变量和局部变量出现重名时, 在局部变量作用域内,全局变量失效!!

发表于 2020-09-17 21:05:29 回复(0)
swap函数没有带任何参数,所以呢,只能找到全局变量。
发表于 2021-02-07 20:37:46 回复(0)
这样编译器不会报错吗????真是难受啊,还来一个就近原则。。。
发表于 2021-03-27 08:18:52 回复(1)
当实际参数传递给形式参数时,形参是实参的一份临时拷贝,而对形参的修改,是不会影响到实参的;要使参数的值改变,就得取地址过去,然后进一步通过地址达到远程操控来改变参数值的目的
发表于 2025-01-19 18:14:09 回复(0)
我在vs2013里面运行,x,y的值会经过修改。
发表于 2018-07-30 09:53:28 回复(4)
纯属 眼神不好
发表于 2025-04-07 09:22:32 回复(0)
mad,惯性思维了,swap都没传参
编辑于 2024-04-23 10:23:11 回复(0)
函数没有返回值函数是栈里面的执行完出栈释放所以不变
发表于 2023-04-21 15:50:16 回复(0)
没有形参没有压栈,就只能找全局的
发表于 2021-01-19 12:44:11 回复(0)
会交换吧,但是输出是就近原则
发表于 2020-08-19 22:03:17 回复(0)

看错了

发表于 2018-09-03 08:44:14 回复(1)
3,8 考察局部变量作用域和全局变量作用域
发表于 2018-07-30 23:48:35 回复(0)