#define MAX(a,b) ((dx > dy) ? dx : dy)
Кто-нибудь возражает против разрушения части ((dx> dy)? Dx: dy)?Это приходит из урока консоли 1-60.
Это примерно эквивалентно:
int MAX (int dx, int dy) { if (dx > dy) return dx; else return dy; }
Это также не правильно.Должно быть:
#define MAX(a,b) ((a)>(b))?(a):(b)
Вы смотрите на Тернарный оператор.
test ? expr1 : expr2 - троичный оператор. Это выражение оценивается как expr1, если test истинно, и expr2 в противном случае.
test ? expr1 : expr2
expr1
test
expr2
Как написано, строка не имеет смысла для меня. Но
#define MAX(a, b) ((a > b) ? a : b)
переводит примерно, в псевдокоде, на
#define MAX(a,b) if (a > b) then a else b
Это означает, что если dx больше, чем dy, то выберите dx, в противном случае выберите dy.