執行後y的值是mainint a1,2,3,4,y,p a y p

時間 2021-08-11 19:14:19

1樓:匿名使用者

y的值為1

*p=a將a陣列的首個元素的值賦給p,即將a[0]的地址賦給指著py=*p++將p所指的地址中的值賦給y,指標p向後移動一位指向p[1]

所以y的值為1

2樓:手機使用者

程式最好排一下版。

首先解釋一下for迴圈

for(i = 0; i

i = 0為初始化語句,只有第一次迴圈時會執行。

i < n為迴圈條件,每一次迴圈前都會進行檢查。

++i為附屬操作,每一次迴圈後都會執行

第一題:

main()

printf("%d\n",y);

}第一次經過for(x=1,x<3;x++) 後y+=p[x] 應該是 y=y+a[2]而不是y=y+p[2]

第一次執行迴圈, x 為1,因此下面一句為 y = y + p[1]p的初值為&a[1],即p[0] = a[1], p[1] = a[2]

第二題main()

;int i,j,s=0;

for(i=1;i<3;i++)

printf("%d\n",s);}}

第一次進入迴圈i = 1; j = 0; s = s + a[1][0];

c語言 定義則執行y=(*--p)++後,y的值是

3樓:

這好解釋啊,因為++是後++,要等到把(*--p)的值賦給y後(*--p)的值才會增1。所以結果是y=1,a[0]=2。你可以用下面的**驗證:

int main(void),y,*p=&a[1];

y=(*--p)++;

printf("%d %d\n",y,a[0]);

return 0;}

int a[]={1,2,3,4},y,*p=a;執行語句y=(*p++)--後,a中元素的值為什麼會是{1,1,3,4 },請詳細解答

4樓:匿名使用者

y=(*p++)-- 並不是陣列裡的每一個元素都變化的,只變化了一個的

一開始p =a[0]的地址

p++ = a[1]的地址

*p++也就是a[1]

a[1]--

陣列就變成1 1 3 4

這是我個人看法,請參考~~

5樓:匿名使用者

不對啊,我覺得是a[0]被改了,然後我試了一下,確實是只有a[0]被改了

因為後++返回的是p未加一之前的值,所以*的是p,也就是a中的第一個元素

這樣再--,修改的就是a[0]了。

後面三個還是保持原來的值,y=(*p++)--這句話隻影響了第一個值

6樓:亂舞大螃蟹

y=(*p++)--

根據運算子的優先順序,這句話你可以讓它變個更直觀的形式:

y=(*(p++))--

現在就清晰了,首先計算的是p++,p++之後實際p指向的不是第一個元素了,實際指向的是陣列的第二個元素

再來*(p++) 實際就是取得陣列的第二個元素的值。

再來(*(p++))-- 實際就是對取得的陣列的第二個元素的值進行-1運算。又因為是後--,所以直接將第二個元素的值-1了。

7樓:

指標p初始化後指向a[0]

執行語句y=(*p++)--的時候分兩步,先(*p++)運算後將p的指向調整到了a[1],取值2,然後賦值給y,最後a[1]執行--操作,結果就是a[2] = 1了,a[2] 和a[3]沒參與運算,所以不變

c語言裡++的優先順序高於*,並且運算優先不能用()來表明,(*p)++ 會將儲存內容自增,*(p++)則會先自增後取值,所以指標的自增自減操作不會和*運算同時進行,會先*運算取值後再自增自減操作

已知:int a[]={1,2,3,4}, y, *p=a;則執行語句y = (*++p)--;之後, 陣列a各元素的值變為?

8樓:匿名使用者

已知int a=, y, *p=a;則執行來語句y = (*++p)--;之後自, 陣列a各元素的值變為1,1,3,4 。

標準函式int(x)其基本功能是得到一個不大於x的最大整數,如int(3.59)=3,int(-2.01)=-3。

int函式是一個用途很廣的函式,在教學中能有目的的分列其使用技巧。

c語言沒有規定各種整數型別的表示範圍,也就是說,沒有規定各種整數的二進位制編碼長度,對於int和long。

9樓:

b正確,選b。++p使p指向了2,*++p就是a[1],(*++p)--就是a[1]--。變數y的值是2,y=a[1]--;是把a[1]的值賦給y後才對a[1]作減一運算。

10樓:匿名使用者

執行過程是p++,然後y=*p;然後(*p)--。

即p的指標位增加一,然後賦值,最後指標對應值減一,即y=a[1],然後a[1]=a[1]-1;

綜上答案是b、b

11樓:匿名使用者

先++p,p指向a[1],

再*p,=2;

賦給y,y=2;

最後*p=2,--後,*p=1

所以是b b

已知:int a[]={1,2,3,4}, y, *p=a;則執行語句y = (*++p)--;之後, y為何為2?

12樓:

前置自增自減,先自增自減,在使用值,後置自增自減,先使用值,再自增自減

首先,p指向 a[0]

++p,p指向a[1],則*++p就是先指向a[1],在取a[1]的值,為2

後面的--是先取 *++p的值,之後再自減,所以y還是為2

13樓:匿名使用者

當i=1時,執行x=i++語句,會先將 i 賦於x,然後才執行i=i+1,所以x=1, i=2

如果寫成x=++i,會先執行i=i+1,然後將 i 賦於x,此時x和i都為2

14樓:胡說八道

這個是一個算符先後順序問題

先說題目:++p表示指標往後加1 , 這時y=2,而--是在賦值以後執行的,所以y=2,而a=;

再說x=i++,同樣的道理,先賦值,再自增,因此x=1; i=2;

echarts設定y軸的min值600後y軸起始座標不為

大黑哥 固定可以當拖拽右鍵或者是滑動滾軸的時候,縱座標會自動向上走或者是向下走時,把橫座標左右移動就行了。座標值,是通過測量被測實際要素上具有代表性的引數來表示行為誤差值的原則。測量座標值原則是通過測量被測實際要素上具有代表性的引數 即特徵引數 來表示行為誤差值的原則。這是一條近似的原則,採用此原則...

以下程式段執行後sum的值是int a 39,8,7,6,5,4,3,2,

就主對角線上三角形的元素之和呀,9 8 7 5 4 1 34,所以選d。 樂灬天 答案是d。i為0時,裡面一層for迴圈會執行3次,求出a 0 0 a 0 1 a 0 2 共3個數的和,也就是9,8,7的和 i為1時,裡面一層for迴圈會執行2次,求出a 1 1 a 1 2 共2個數的和,也就是5,...

執行語句 for i 1 i4後,變數i的值是

z粽 是個後置的運算子 也就是說i 4這個條件中的i用的是自增運算前的值 再比如 int main 這樣的話,程式執行得到的顯示是 c 3 a 3 就是在計算c a b的時候a還是2的值 在語句執行完之後才進行自增哦 所以你那個語句裡,在最後不滿足i 4時,i其實是剛好等於4,迴圈執行完之後就變成5...