C語言問題解釋下。。執行結果怎麼是8,17 8理解17就納悶了自己算是

2022-12-23 08:51:22 字數 1401 閱讀 9137

1樓:

原因是函式func()中的變數m,和i是靜態變數(當函式執行一次後,靜態變數會儲存執行結果,當下次呼叫時,將會沿用上次的執行結果。)

也就是說,執行一次func()後,m=8,i=3;這樣就使得第二次執行的結果為17。

靜態變數的生存週期是整個源程式,即,當你關閉整個程式,重新開啟執行時,變數會回到初始值;否則會儲存執行的結果。

不知道我是否講明白。

2樓:河蟹和諧河蟹

第乙個func是

m = 0, i = 2;

i = 2 + 0 + 1 = 3;

m = 3 + 4 + 1 = 8

第二次func是

m = 8, i = 3;

i = 3 + 8+ 1 = 12

m = 12+ 4 + 1 = 17

3樓:

1, 第一次呼叫 func: i = i + m + 1; 代入數就是 i = 2 + 0 + 1即3;

m = i + a + b;代入數就是m = 3 + 4 + 1 即8,所以第一次列印8;

1, 第二次呼叫 func: i = i + m + 1; 代入數就是 i = 3 + 8 + 1即12;

m = i + a + b;代入數就是m = 12 + 4 + 1 即17

4樓:匿名使用者

static如果你了解了你就明白了,

第一次進入func(),m未被初始化,所以初始化m,i,m=0,i=2

執行後i=3,m=8,

第二次進入func(),m已經被初始化,所以不再初始化m,i,m,i的值不變m=8,i=3

執行後i=12,m=17,

該變數在全域性資料區分配記憶體;

未經初始化的靜態全域性變數會被程式自動初始化為0(自動變數的值是隨機的,除非它被顯式初始化);

靜態全域性變數在宣告它的整個檔案都是可見的,而在檔案之外是不可見的;

5樓:匿名使用者

#include

void main()

int func(int a,int b)

6樓:

m=0 i=2

i=2+0+1 =3

m=3+4+1=8

p=8i=3+8+1=12

m=12+4+1=17

p=17

注意m和i 是static,第一次初始化以後,值就一直保留的

7樓:匿名使用者

因為你的m和i定義為靜態變數,靜態變數會儲存上次呼叫函式時的值!

8樓:淡小壘

你的指標變數沒有賦初值就引用,指向了乙個未知的位置,故後果是很明顯的,這樣在程式設計裡也是很危險的

求解釋一段C語言程式的執行結果,程式及結果如圖所示

列印bai出來應該是 個很大的未知du數,因為a x 傳入的zhi引數是daox的位址,p是乙個指標,所以內p x的位址容 而不是20,p指代的是先將p做加的操作 也就是將x的位址做加1操作,然後再取加1後位址裡面的值,而你現在只設定了x的位址上的值為20,而x加1的位址上的值是個未知數,所以答案是...

C語言下面程式的執行結果是

x的值是每次來在執行迴圈體源第乙個語句進行賦值的。bai每個if語句都是du先加加,然zhi後再模2,模3,模7。全部條件滿足dao後,才會輸出x。計算的並非是x的原始值,而是計算的三次加加後的x的值。比如輸出28的時候,i的值是25,那麼此時x的值也是25。首先進行第乙個判斷,因為是前加加,所以對...

C語言這個函式執行結果為什麼是0,4,

c a a a b,b 4 最先執行的是 a,a變成1 然後執行的是 a a,a變成0 然後執行的是c a,c變成0 相當於不變 然後執行的是a b,a變成0 相當於不變 然後執行的是b 4,b變成4 所以最後結果是a 0,b 4,c 0 這是一個逗號表示式,逗號表示式的結果取決於最後一個表示式的結...