_>Смысл в том, что вероятность равенства одних полей в недублированных объектах выше, чем других. Таким образом, хотелось бы сделать так, чтобы при a1!=a2 остальные поля не вычислялись. Я правильно помню, что для if эта особеноость прописана стандартом?
Она прописана для втроенных операторов && и ||, поэтому и в первом и во втором примере порядок и оптимизация вычисления гарантируется стандартом см. 5.14 и 5.15 .