1樓:好嘞啊啊啊啊
x=10是全域性變數,和下面的區域性變數都重複了所以不起作用,static定義的靜態資料,程式消亡資料還是存在,所以一開始執行f(x),x=5,所以y=5,返回的x是16,呼叫函式中x=11變成x=16,然後在執行下一個f(x),x=6所以呼叫函式中y=6,6+16=22,所以最終等於22
2樓:夏夜輕語
當函式中的有變數的變數名和全域性變數名相同,在當前函式內,不會使用全域性變數,所以無視x=10
在函式f(y)中,定義是的x是靜態變數,所以它只有在聲名時才會自動賦一次值,
也就是說static int x=11;用過一次你就可以無視他的存在。
在main()函式中,你用了{}定義了int x=5,這個int x=5只會在{}內生效它是{}的區域性變數,出了{}後,int x=5的使命就完成了,記憶體會釋放。
要明白你定義了兩個x,他們是分別的兩個變數
執行第一個f(x)後,靜態變數x=5+11=16
執行第二個f(x)後,靜態變數x由於不會重新賦值,還是16,所以返回值是22
求這段程式的解釋,c語言,求這段程式的解釋
這段 的作用是判斷,輸入回車以前的這個單詞裡有多少個abc,有多少個其他的字元 teacher 這個單詞裡有a和c各一個,所以v0的答案是2,其他的字元是7 2 5個,所以v1的答案是5 判斷某一串字元中,有多少個c字元 v0 以及有多少個非a,非b和非c v1 的字元 c語言,求這段程式的解釋 每...
C語言程式輸出結果,求大神詳細解釋
include void fun int p 注意所有符號要是在英文狀態下輸入main 輸出結果是21 1 首先要明白,因為這樣定義的fun函式執行完後並不能影響原來a的值,因而main程式中輸出的a值就是預先賦的1 要想函式執行完後改變a的值,則需要 與 來傳遞引數。參考下面的程式 include...
下面程式的執行結果是多少,求詳細解釋
一步步來呀 從b 到f 你試一下 k 經歷過 1 0 1 2 0 1 10 11 3 4最後是4哦 將每一步執行的值輸出 則 為 include int main k printf d n k while c g printf k d n k return 0 結果也為如圖 下面程式的執行結果為 c...