| и || (Пример из книги) - C#
Формулировка задачи:
Отрывок программы, где идет перегрузка оператора |. Истина - если хотя бы одна из координат !=0. А Ложь, если все все =0.
Не понятно, почему оператор ИЛИ так же не используется в укороченном варианте. Ведь по второй скобке не содержится никаких исключительных ситуаций (типа деления на 0 и т.д.). А программа могла бы работать быстрей, если бы первый операнд (1-я скобка),например, была бы True. В этом случае 2й операнд уже не вычисляется. Но в данном случае просчитываться будут обе. Почему так сделано? Просто так решил автор? Или я чего-то не вижу?Спасибо.
class ThreeD
{
int x, y, z; // Координаты
public ThreeD() { x = y = z = 0; }
public ThreeD(int i, int j, int k) { x = i; y = j; z = k; }
// Перегрузка |.
public static bool operator |(ThreeD op1, ThreeD op2)
{
if (((op1.x != 0) || (op1.y != 0) || (op1.z != 0)) | // <--------------- см. сюда.
((op2.x != 0) || (op2.y != 0) || (op2.z != 0)))
return true;
else
return false;
}
....Решение задачи: «| и || (Пример из книги)»
textual
Листинг программы
((op1.x != 0) || (op1.y != 0) || (op1.z != 0))