max(2, max(1,4))
расширяется до (2> (1>4)?(1):(4) )?(2):( (1>4)?(1):(4) )
УВЕДОМЛЕНИЕ 2> (1>4)?
равно 2 > false == 2 > 0
, что верно.Таким образом, 2 является значением.
, чтобы исправить это, добавьте несколько скобок:)
#include <stdio.h>
#define max(a,b) (((a)>(b))?(a):(b))
#define min(a,b) (((b)>(a))?(a):(b))
int main()
{
printf("%d",max(2, max(1,4)));
return 0;
}