MST

星途 面试题库

面试题:C++中局部与全局同名变量作用域的常规分析

请分析以下C++代码的输出结果,并详细解释原因。 ```cpp #include <iostream> int num = 10; void func() { int num = 20; std::cout << num << std::endl; } int main() { func(); std::cout << num << std::endl; return 0; } ```
50.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 输出结果
    • 首先输出 20
    • 然后输出 10
  2. 原因解释
    • func 函数中,定义了一个局部变量 num,其作用域仅限于 func 函数内部。当执行 std::cout << num << std::endl; 时,输出的是这个局部变量 num 的值,即 20
    • main 函数中,先调用 func 函数输出 20。之后执行 std::cout << num << std::endl;,这里输出的是全局变量 num,其初始值为 10,所以输出 10。全局变量 num 的作用域是整个程序,但在 func 函数内部,局部变量 num 屏蔽了全局变量 num,使得在 func 函数内访问的是局部变量。