C初心者です

int a = 0;
int b = 0;
a == b && a++ || a++;

この時aが2になってしまい、短絡評価にて条件が真の時に論理和の処理も実行されてしまいます
どうしてこうなってしまうのでしょうか?