i = 2,问(i++) + (i++)表达式 C中等于4,java中等于5 这是为什么?

如题:按我的理解是等于5的,请教下为何c语言中答案是4

java:

                int i =2;
        int temp;

        temp = (i++) + (i++);
        System.out.println(temp);

c语言

    int i =2;
    int temp;

    temp = (i++) + (i++);
    printf("%d",temp);

如果你多试几个编译器就知道,这个结果除了4 5还可以是别的。因为这个叫做未定义行为。
http://www.it610.com/article/1508275.htm
讨论这种问题是愚蠢的。

C中 i++ 是i参与运算后,i的值再自增1,即temp=2+2=4;
java是i++ 是后自增,就是先用i再增1 ,第二个i为3,即temp=2+3=5

C语言中不同编译器会有不同的结果。