Javaの初学者です。

以下のCとJavaのプログラムで実行結果が異なります。
何が原因なのでしょうか。
原因に関連するキーワードなど教えていただきたいです。
よろしくお願いします。

・Javaのコード

int a = 0;
if(a == ++a)
{
    System.out.println("equal");
}else{
    System.out.println("not equal");
}

実行結果
not equal

Cのコード

int a = 0;
if(a == ++a)
{
    printf("equal\n");
}else{
    printf("not equal\n");
}

実行結果
equal