C语言中.n等于3,b=(n++)+(++n)+(n++)等于多少

1个回答

  • int main()

    {

    int n = 3;

    printf("%dn", (n++)+(++n)+(n++));

    printf("%dn", n);

    int m = 3;

    printf("%dn", (m++)+(++m));

    printf("%dn", m);

    return 0;

    }

    我自己试了一下,在Windows和linux,这个程序运行的结果相同,都是 12 6 8 5.

    由此可以推算一下运行的方式,很明显,对于 (n++)+(++n)+(n++) 的计算,不是 ((n++)+(++n))+(n++)来的,不然结果就是 8+6=14了.反之也不对.

    唯一的解释就是,12 = 4+4+4, 8=4+4.也就是说,以上两个计算当中,值只增加了1次,在算出结果之后,值才按我们预期的计算.

    于是我有试了一下:

    int j = 3;

    printf("%dn", (j++) + (j++));

    printf("%dn", j);

    结果正如我所料,是 6 5.

    结论:在 ++x 与 x++ 的连续表达式中,先计算 ++x 的数量,每有1个 ++x, x的值增加1;然后进行 运算符(+,-)运算,最后执行 x++运算.