java vs c整数

mri*_*ka3 2 c java

可能重复:
++ i + ++ i + ++ i in Java vs C.

使用Java:

public class Main {
    public static void main(String[] args) {
        int a=10;
        a=a++;
        a=a++;
        System.out.println(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

产量:10

使用turbo C:

void main(){
    int a=10;
    a=a++;
    a=a++;
    printf("%d",a);
}
Run Code Online (Sandbox Code Playgroud)

输出:12这是怎么回事?

MBy*_*ByD 13

a=a++未定义的行为.所以即使是两个C程序也可能会返回不同的结果.

++操作之后,后缀会增加变量,但是在计算正确的表达式之后或在赋值之后,您不知道它是否会增加变量,并且您不知道它是否会影响结果.

假设b是用于计算正确表达式的临时寄存器/变量:

选项1:

a分配给b,b分配给a,b增加1.(一个会是一样的)

选项2:

a分配给b,b增加1,b分配给a.(a将递增)