自增與指標取值運算子

來源:互聯網
上載者:User

++和--的運算優先順序比*高。

#include <stdio.h>#include <stdlib.h>void printa(int * a){    printf("a[]:");    int i;    for(i=0;i<7;i++)        printf("%d ",*(a+i));    printf("\n\n");}void seta(int *a){    int i;    for(i=0;i<7;i++)        a[i]=i+1;}int main(){    int a[]={1,2,3,4,5,6,7};    int *p;    p=a;    int r=*(p++);///先取值*p賦給r,然後p自增  。這裡是後自增    printf("*p1=%d,r=%d\n",*p,r);///2,=a[1]    printa(a);    seta(a);    p=a;    r=*p++;///自增優先順序高,先取值*p,然後p自增    printf("*p2=%d,r=%d\n",*p,r);///2,=a[1]    printa(a);    seta(a);    p=a;    (*p)++;///先取值a[0],然後a[0]自增1    printf("*p3=%d,%d\n",*p,a[1]);///2,=a[1]    printa(a);    seta(a);    p=a;    r=*++p;///p先自增,然後取值=a[1]    printf("*p4=%d,%d\n",*p,r);///    printa(a);    seta(a);    p=a;     ++(*p);///先取值得*p=a[0],然後a[0]自增1    printf("*p5=%d,p-a=%d\n",*p,p-a);///2,a[0]    printa(a);    seta(a);    p=a;    ++*p;///同上,因為*比++離p近?    printf("*p6=%d,p-a=%d\n",*p,p-a);///2,a[0]    printa(a);    return 0;}

是挺無聊的,但是筆試就考。。。。。

附:c++運算子優先順序表,摘自<C++ Primer>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.