首页 > 试题广场 >

执行下面程序,正确的输出是() int x=5,y=7; v

[单选题]
执行下面程序,正确的输出是()
int x=5,y=7;
void swap()
{
	int z;
	z=x;
	x=y;
	y=z;
} 
int main()
{
	int x=3,y=8;
	swap();
	printf("%d,%d\n", x, y);
	return 0;
} 

  • 5,7
  • 7,5
  • 3,8
  • 8,3

在这段代码中,swap函数试图交换两个全局变量x和y的值。然而,由于swap函数中的x和y是局部变量,它们与全局变量x和y是不同的实体。因此,swap函数内部的交换不会影响全局变量的值。

在main函数中,x和y被重新定义为局部变量,并且分别初始化为 3 和 8。调用swap函数后,由于swap函数中的交换不会影响全局变量,所以main函数中的局部变量x和y的值不会改变。

发表于 2024-09-20 11:10:31 回复(1)
没有传参!
发表于 2024-09-18 16:51:35 回复(0)
1. **全局变量与局部变量作用域**:  
   - 全局变量 `x=5`, `y=7`(作用域为整个程序)。  
   - `main` 函数中定义了局部变量 `x=3`, `y=8`(作用域仅限于 `main` 函数)。  

2. **`swap` 函数的行为**:  
   - `swap` 函数没有参数,操作的是全局变量 `x` 和 `y`,将它们的值交换为 `7` 和 `5`。  
   - 该操作不影响 `main` 函数中的局部变量 `x` 和 `y`,因为它们作用域不同。  

3. **`printf` 输出结果**:  
   - `printf` 打印的是 `main` 函数中的局部变量 `x` 和 `y`,因此输出为 **3,8**。  

**关键点**:  
- 局部变量会覆盖同名的全局变量。  
- 函数调用时若未传递参数,无法直接修改其他作用域的局部变量。
发表于 2025-02-23 15:07:05 回复(0)