-
很容易理解,傳遞給函式 f 的 a 值始終是 2,但現在關鍵是 b 和 c 的值。
對於 b,它是 f() 函式中的區域性變數,因此每次呼叫它時,其初始值為 0
執行 b++ 後變為 1,每次計算 a+b+c 時為 1
對於 c,它是 f() 函式內部的乙個區域性靜態變數,也就是說,它的範圍僅限於 f() 函式內部,但由於其靜態變數的特性,它只初始化一次,即編譯時初始化,初始值為 3,以後每次呼叫 f(), 它不會再次初始化,它的值儲存在靜態區域,下次呼叫 f() 時,它將繼續使用儲存在靜態區域的值。
所以第一次呼叫 f() 來執行 c++,它的值變為 4,結果是 2+1+4=7
第二次呼叫 f() 執行 c++,之前,它的值是 4(儲存在靜態區域不會因為函式的結束被系統**),累加是 5,結果當然是 2+1+5=8,第三次和第二次類似,所以結果是 9
關鍵是要理解靜態變數的含義,靜態變數儲存在記憶體的靜態區域,在編譯器編譯時只初始化一次,執行時不會再次初始化。
朋友,請【回答】,你的是我回答問題的動力,如果你不明白,請問。 謝謝。
-
你好,唯一要注意的是,函式f中的c是乙個靜態變數,第一次呼叫是3,更改後的值會被儲存並影響後續呼叫,第二次是4,第三次c=5; 所以輸出 7、8、9
-
從右到左計算,結果為 0。
首先計算最左邊的結果是-2,x=10%(-2)餘數運算,結果為0,即此時x已經為0,然後執行x+=0,相當於x=x+0,結果為0。
-
p=a[1]+1;
是 *p=&a[1][1];
*a 是 &a[0][0];
因此,p-*a 是 a[1][1] 和 a[0][0] 之間的差值,即 3+1=4
-
當 fun(4, 1) 第一次執行時,m=0 且 i=2
執行 i+=m+1,i = 2+0+1=3;
m=i+a+b:m=3+4+1=8
當 fun(4, 1) 第二次執行時。
m=8, i=3;(靜態變數只初始化一次,所以它仍然是最後乙個值)。
執行 i+=m+1,i=3+8+1=12
m=i+a+b,執行後,m=12+4+1=17,所以結果是8和17
-
77 分(滿分 A)。
int) 是指對 int 的強制轉換,即只保留整數部分,即 2。
滿分 78 分。 3 2 的值為 1,因為兩個整數被除法,結果仍然是整數。 由於 x 和 y 是 double 型別,因此 x 實際上是 ,所以 y=。
-
按優先順序,首先計算 3 2
是乙個整數,結果是乙個整數,3 2=1
再次計算 x+1,x 是 double 型別,結果是 double 型別。
Y 是雙精度型別,Y = C
-
由於 3 2 部分是整數運算,結果是 1,加上原來的 1(即 2,為了反映雙精度型別,答案是。
-
(3 < 2) |1) &4 > 3 - 0)))
三個關係語句。
第乙個(3 < 2)是假的
第二個 (-1) 為真
第三場 (4 > 3 - 0)))即 (4 > 3 - 1)),為真
所以表示式是假的||true &&True,結果為 true,即 1
這個問題本身有問題。
結果沒有初始化,沒有指向任何空格就傳遞給add函式,這本身就是錯誤的,當然也可以實現,在add函式中申請乙個位址來儲存結果,並將位址發回給結果,但是該位址的**是無法控制的, 容易造成記憶體洩漏。 >>>More
1、盡量保持良好的心態,避免煩躁,學會克服。 2、加強與同學的合作,多討論問題,多想辦法解決問題。 3、打好基礎,打好基礎,注重基礎理論的學習,不要野心勃勃。 >>>More