关于++/--/*p++/*--p等的探究

begin

首先声明我已经吐了。。。关于这个表达式要多实践一下,多说无意,自己多实验一下,真正生产中没人会这么写,肯定那个会被老板打死的,内部肯定和编译器等的运行机理有关,我等只能黑盒子一样,测试能想到的饿各种情况总结所谓规律,真累,也没有意义。所以我就懒一下,不详细解释,有一篇文章让我理解了,待会儿附上,我就了解一下吧,可能我的认识还是比较浅薄。也不能说毫无用处,至少知道了printf是从右到做求值输出的。

来自博客:http://www.cnblogs.com/IAmBetter/p/3175711.html

附上我自己写的渣渣测试:

#include "mydecl.h"

//----------
void fun1();
void fun0();
//----------

int main(void){

    // fun0()
    //============fun1()
    printf("run fun1\n");
    fun1();


    return 0;
}

void fun0(){
    int j,a[]={1,3,5,7,9,11,13,15},*p=a+5;
    for(j=3;j;j--){
        switch(j){
            case 1:
            case 2: 
                printf("case 2---%d,",*p++);
                break;
            case 3: 
                // printf("case3:%d\n", p);
                printf("case3---%d,", *(--p));
        }
        putchar('\n');
    }
}
//=======================

void fun1(){
    /*int q[]={1,2,3,4,5,6};
    int *p;
    p=q;

    printf("%d,%d,%d\n",*p,*p++,*(p++));*/
    puts("------restore---++ and * which is higher?---");
    int a[]={0,2,4,6,8,10,12,14,16},x,y;
    int *p,*q;
    p=a;
    q=a;
    x=(*p)++;//*p++;
    int x_1=*p;
    y=*++q;
    printf("x= %d\n", x);
    printf("x_1= %d\n",x_1 );
    printf("y= %d\n", y);
    // x=p++*;//error
    // y=++p*;//error
    /*printf("x=p++*:%d\n", y);
    printf("y=++p*:%d\n", y);*/
}

end, thanks

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值