关于单独的a++问题,而不是i=a++的问题困惑

 # include <stdio.h>

int main(void)
{
    int y = 2;
    int n = 3;

    int nextnum = (y + n++)*6;
    printf("%d\n", nextnum);

    return 0;
}

请问下这里的n++为什么不是n = n+1变成4,然后最终答案是(2+4)*6 = 36呢?
正确答案是n++之后n仍然=3,(2+3)*6=30!有高手指点下迷津吗?谢谢!

 int nextnum = (y + n++)*6;
 这句话拆开来就是
 int nextnum = (y + n)*6;
 n=n+1;

俩加号在后边是指表达式结束后再自增1,俩加号在前边是指先自增1再计算表达式。

n++ 是先使用n在++的先用后加

补问:是不是可以这么理解?如果是这样的话,单独的n++和n就没区别了,他们都代表n,而赋值后的i = n++就代表n+1了?

单独的n++和n有区别的;执行过n++他后面使用n实际上已经n+1了,i = n++ 的i=n+1是因为运算符的优先级原因,因为++的优先级大于=,所以在赋值i时,先执行了++

如果把n++改为++n就是你想要的结果了

n++ 是先用 n 的值运算,再 n 加1
++n 是你想要的:n 先加 1,再进行运行

关于c语言的++x 和x++ 问题 是关于一种特殊规定 也就是机器自己的逻辑 这里的 结果和你想要的结果不一样 那你不妨在下面在多打印一下n的值 看看
其是否发生改变 答案是肯定的 你刚刚改变的n值只有到本次运算后才发生改变 所以遇到这个问题 要多注意 加油 加油

n++ 跟++n的区别,
n++是让n参加操作后在+1,而++n是先自身+1后在参加操作。。。

后++优先级比赋值=的优先级低嘛,当然是先赋值后++咯!