求這段程式執行結果的解釋

時間 2021-05-05 23:51:59

1樓:鄭渝

最後的結果應該是:

2,3解釋一下:

union的意思是union中的元素都公用一塊記憶體,所以a和b使用了同一塊記憶體儲存;也就是說,對於s內的任一個元素來說,經過運算:

s[i].a=n;

s[i].b=s[i].a+1;

以後,b和a的值是相同的。

例如:n==1,i==0時,s[0].a=1;

s[0].b=s[0].a+1;

結果就是s[0].a == s[0].b == 2

n==3,i==1時,s[1].a=3;

s[1].b=s[1].a+1;

結果就是s[0].a == s[0].b == 4

p=&s[0]的含義是p指向陣列s的首地址,

++p->a的含義是說先取成員變數a的值,再對取得的值做累加1的操作。

因為c語言中的關鍵字union的含義就是說,它所定義的所有的成員變數使用一塊共享的記憶體空間,記憶體空間的大小是根據成員變數中佔用記憶體最大的來確定的。

一個int型的變數佔4個位元組,現在,a和b都是int型變數,所以他們共同佔用4個位元組的記憶體,共享的意思是說,改變了b的值就等於改變了a的值,所以,經過

s[i].a=n;

s[i].b=s[i].a+1;

的操作以後,a和b都被修改了,並且是一樣的,以為他們使用相同的記憶體。

等於3是因為語句:

++p->a

先執行了p->a的操作,再執行了自加的操作,

p->a的值為2,再自加就變成3了。

操作符「->」的優先順序要大於"++"的優先順序。

可以,因為p->a等價於s[0].a,所以可以自加。

下列程式段的執行結果為?看不懂啊求解釋!!解釋過程喲不要單單是個答案

手機使用者 兩種順序關鍵不同在於while迴圈裡面 第一種while迴圈內變數前3次變化為 迴圈次數 pi s n t迴圈前 0 1 1 11 1 1 3 1 3 2 2 3 1 5 1 53 13 15 1 7 1 7第二種while迴圈內變數前3次變化為 迴圈次數 pi t s n迴圈前 0 1...

看一下下面這段VB程式的執行結果 為什麼呢

如果過程的級別變數是用 static 關鍵字來宣告的,則只要 正在任何模組中執行,此變數仍會保留它的值。而當所有的 都完成執行後,變數會失去它的範圍和它的值。如果過程中用 dim 宣告變數,則當該過程的 完成執行後,變數就會失去它的範圍和它的值。你的給出過程只是用來判斷敲回車鍵的,模組中肯定還有其它...

寫出下面程式執行的結果

1,2 while y 2 1,執行 此時y 1進入do 完成do,x 2 與do連的while y 1,後y 0,進入do,x 1 與do連的while y 0,跳出do,y 1 進入第一個while y 1 1,跳出while,執行 y 2 進入printf,1,2 程式有誤,改正後輸出結果為 ...