指针、数的自增和自减

指针

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int a[3] = { 2,7,8 };
    int* p;
    int j;
    p = a;//让指针变量指向p,指向数组的开头
    j = *p++;  //答案输出为2 2 7//j=*p;p++(没有被括号括起来),*p和++的优先级一样,*p的优先级低于()(因为*p已经运算,顾为p++)
    //j = (* p) ++;//j=*p;(*p)++;答案输出为3 2 3 。这个式子中的 (*p) 可以等价于 a[0] ;或p [0]
    printf("a[0]=%d,j=%d,*p=%d\n", a[0], j, *p);// 2 2 7
    j = p[0]++;//j=p[0],p[0]++.输出答案为2 7 8
    //j = (* p) ++;//j=*p;(*p)++;答案输出为3 2 3 。这个式子中的 (*p) 可以等价于 a[0] ;或p [0]
    printf("a[0]=%d,j=%d,*p=%d\n", a[0], j, *p);

    return 0; 
}

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//i++代表的是i=i+1;比较难理解是后++后--(i++)
//前++(++i)正常的运算优先级规律计算就行
int main()
{
    int i = -1;
    int j;
    j=i++>-1;//后加加拆成两部分j=i>-1;i++
    printf("i=%d,j=%d\n", i,j);
    printf("i的字节数=%d\n", sizeof(i));
    int b = 1;
    int c = 1;
    int k;
    k = b++ + ++b + ++c + c++;
    printf("k=%d\n", k);//k=8;
    //原因:b++时,b=1(这个时候b=2的,不过将2返回给了1; 
    //++b时,b=3
    //++c时,c=2; c++时,c的值为3,但3返回给了2,即c=2
    //所以原式可写成 1+3+2+2=8

    //i++的原理 :先自增,然后返回自增之前的值
    //++i的原理 :先自增,然后返回自增之后的值


    int e = 2;
    int f;
    f = (3 * e++) + e;
    printf("f=%d\n", f);
    int h = 2;
    int g;
    g =h+(3 * h++);
    printf("g=%d\n", g);
    //结果都为8

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值