2017-11-10 2 views
-2
#include <iostream> 
int a=5; 
using namespace std; 
int fun() 
{ 
    a=17; 
    return 3; 
} 
int main() 
{ 
    a=a+fun(); 
    cout<<a; 
    return 0; 
} 

実行開始時の流れは? コード実行がmainで始まると読んでいます。このような場合は実行前に、コンパイラはaをフェッチするか選択することも表現a + fun()を解釈しながら答えは8なるが、C++コンパイラの回答で、このコードの実行に20C++コードの実行の流れは?

+2

式の部分式の評価の順序は不明です。特に、 'a + fun()'では、 'a'の値が' fun() 'の前か後に取られるかは不明です(' fun() 'の呼び出しは' a'の値を変更します)これはグローバル変数です)。あなたのコンパイラは 'fun()'を最初に呼び出すことを選択します。 –

+0

詳細については、https://stackoverflow.com/questions/9818099/order-of-function-callingを参照してください。 –

答えて

関連する問題