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 這是一個逗號表示式,逗號表示式的結果取決於最後一個表示式的結...