global在matlab主函式和子函式中對bb都宣告瞭之後,發生的現象會是bb一直保持初始化的值再也不變了。最清晰的global申明的講解

lixiaohu0524發表於2020-11-20

function [aa,t]=fff(a,b)
global bb;
aa=a+ff(b);
t=bb;
end

function a=ff(bb)
global bb
a=bb+3;
end

執行結果:
bb (最初沒有寫第一個主函式的global時報錯)

函式或變數 ‘bb’ 無法識別。

加上去之後發現,結果是2+4+3=9。正常

fff(2,4)
警告: 區域性變數的值可能已發生更改,以便與全域性變數匹配。以後版本的 MATLAB 將要求您在使用變數之前將該變數宣告為全域性變數。

ans =

 9

接著 嘗試輸出bb失敗了。追加輸出的變數他,成為 [aa,t]=fff(a,b)
fff(23,5)

警告: 區域性變數的值可能已發生更改,以便與全域性變數匹配。以後版本的 MATLAB 將要求您在使用變數之前將該變數宣告為全域性變數。

In ff (line 2)
In fff (line 3)

ans =

30

bb仍然輸出不了。計算結果30顯示把bb當成了4了。23+4+3=30,不跟著輸入代值進去了。

bb
函式或變數 ‘bb’ 無法識別。

fff(3,6)
警告: 區域性變數的值可能已發生更改,以便與全域性變數匹配。以後版本的 MATLAB 將要求您在使用變數之前將該變數宣告為全域性變數。
In ff (line 2)
In fff (line 3)

ans =

10

計算結果10顯示把bb當成了4了。3+4+3=10,不跟著輸入代值進去了。

fff(3,2)
警告: 區域性變數的值可能已發生更改,以便與全域性變數匹配。以後版本的 MATLAB 將要求您在使用變數之前將該變數宣告為全域性變數。
In ff (line 2)
In fff (line 3)

ans =

10

fff(2,4)
警告: 區域性變數的值可能已發生更改,以便與全域性變數匹配。以後版本的 MATLAB 將要求您在使用變數之前將該變數宣告為全域性變數。
In ff (line 2)
In fff (line 3)

ans =

 9
 計算結果10顯示把bb當成了4了。3+4+3=10,不跟著輸入代值進去了。

相關文章