Условия
X++:
t= d == (5 || 10); // false
и
X++:
t= (d == 5 || d == 10); // true
Отличаются далеко не элегантностью, а принципиальностью. В обоих случаях сис-ма посчитала логически правильно. Разберите выражения внимательно.
Во избежание получения результата, отличного от ожидаемого, в подобных случаях можно использовать более читабельные конструкции, например:
X++:
if (d == 5 || d == 10)
t = true;
Чуть длинее, за то понятнее.