任何人都可以帮我找到输出是什么?这是在C ++中

时间:2011-03-21 03:37:21

标签: c++ netbeans

任何人都可以帮我找到输出结果吗?这是在C ++ ... homwork

在程序中全局定义的变量x被赋予整数值3.在名为f_name的函数中定义的变量x被赋予整数值5.在查看下面的代码后,请回答以下内容。

1  #include <iostream>
2  using namespace std;
3  int f_name(int y);
4 
5  int x = 3;
6  
7  int main()
8  {
9   cout << x;
10  cout << f_name(x);
11  return 0;
12 }
13   
14 int f_name(int y)
15 {
16  int x = 5;
17  return (x + y);
18 }


  What is the output of line 9? _________ line 10? _______________

2 个答案:

答案 0 :(得分:2)

第9行= 3
第10行= 8是输出。

在第9行,只打印全局变量 x 的值。 在第10行,只是将x的值传递给f_name(iny y)。这意味着此功能范围内y的值 3 。将其添加到局部变量x会使函数返回 8


我认为,您在理解变量范围方面遇到了麻烦。要理解这一点,保持这个程序的观点,有两种变量 -

  1. 本地变量
  2. 全球变量
  3. 局部变量是具有局部范围的变量,只能在声明它们的函数中访问。

    全局变量是寿命从程序开始开始并且仅在程序终止后结束的变量。文件范围内的全局变量可以在翻译单元的任何位置访问。

    int main() 
    {
      cout << x;   // x here is the global variable. Because, in main, there is no variable 
                   // called x declared. So it prints 3
      cout << f_name(x); // Here you are passing the value of global variable x, which is 3
      return 0;
    }
    
    int f_name(int y) // The passed value ( i.e., 3 ) is copied to y. 
    {
      int x = 5;
      return (x + y);  // Here you are not accessing global variable x. Because, there 
                       // is a local variable declared called x and initialize with value 5
                       // Now (5+3) = 8, which is returned.
    }
    

答案 1 :(得分:2)

3和8.不?

第9行cout << x;打印全局x的值,即3。 第17行

 return (x + y );  // outputs 8

x指的是本地x,而y的值等于全局x的值,因为它作为参数传递给函数。