C语言:n++ , ++n,n--,--n

#include <stdio.h>
int main()
{
    int a=3,x;
    x=(a++)+(++a)+(++a);
    // 3(4)   5(5)   6(6)
    printf("%d,%d\n",a,x);
    x=(a--)+(--a)+(--a);
    //6(5)   4(4)   3(3)
    printf("%d,%d",a,x);
    getchar();
}

 自增自减完成后,会用新值替换旧值,将新值保存在当前变量中

自增自减的结果必须得有变量来接收,所以自增自减只能针对变量,不能针对数字,例如10++就是错误的。
需要重点说明的是,++ 在变量前面和后面是有区别的:
++ 在前面叫做前自增(例如 ++a)。前自增先进行自增运算,再进行其他操作。
++ 在后面叫做后自增(例如 a++)。后自增先进行其他操作,再进行自增运算。
自减(--)也一样,有前自减和后自减之分。

#include <stdio.h>
int main()
{
    int a = 10, b = 20;
    printf("a=%d, b=%d\n", a, b);
    ++a;
    --b;
    printf("a=%d, b=%d\n", a, b);
    a++;
    b--;
    printf("a=%d, b=%d\n", a, b);
    return 0;
}

结果:

a=10, b=20
a=11, b=19
a=12, b=18

 

#include <stdio.h>
main()
{

    int i=1,j=2,k=3;
    if (i++ ==1 && (++j ==3|| k++ ==3)) 
    {printf("%d %d %d\n",i,j,k);} 
    //当计算表达式i++ ==1时,自增优先级高,先计算i++,根据先使用后加1,所以i++值为1
    //但i的值为2,i==1真;
    //++j ==3,先计算++j,根据先加1再使用的特点,++j的值为3,j的值也为3,所以j==3真
    //由于||的特点,前者为真,则后面的不用计算,所以k的值不变 
    getchar();
 }

结果:2   3   3

posted @ 2021-05-31 15:00  myrj  阅读(779)  评论(0编辑  收藏  举报