2011-03-21 63 views
1

任何人都可以幫我找到輸出是什麼?這是用C++編寫的...同構任何人都可以幫我找到輸出是什麼?這是在C++

在程序中全局定義的變量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? _______________ 
+0

僅供參考:在編輯器中突出顯示您的代碼並使用「代碼」按鈕,這將保持您的換行符合原位。 – Peter 2011-03-21 03:41:15

+3

@newwie,爲什麼不執行你的代碼並自己得到輸出? – 2011-03-21 03:41:29

+3

您是否試過運行它? – 2011-03-21 03:42:14

回答

2

線9 = 3
線10 = 8是輸出。

在第9行,僅打印全局變量的值x。 在第10行,只需將值x傳遞給f_name(iny y)。這意味着在該功能範圍內的y的值是。將此添加到本地變量x給出函數返回的。


我想,你在理解變量的範圍時遇到了麻煩。要理解的是,在角度保持這個程序中,主要存在兩種變量 -

  1. 局部變量
  2. 全局變量

局部變量是具有局部範圍的變量,並只能在宣佈的功能中訪問。

全局變量是變量,它們的生存期從程序開始時開始,僅在程序終止後結束。文件範圍內的全局變量可以在翻譯單元的任何地方訪問。

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. 
} 
2

3和8.否?

在第9行cout << x;打印的全球x即3. 值。在線路17

return (x + y); // outputs 8 

x指本地x而y的值等於「全球x值,因爲它是作爲參數傳遞給函數。

+0

@Martin:好的。明白了你的觀點並編輯了這篇文章。 – 2011-03-21 03:54:02

相關問題