que estoy viendo un comportamiento extraño con la macro MAX en Objective C. En concreto, tengo este código en mi función principal:Objetivo C MAX insecto macro
NSArray* array = [NSArray array];
NSLog(@"[array count] - 1 = %d", [array count] - 1);
NSLog(@"MAX(0, [array count] - 1) = %d", MAX(0, [array count] - 1));
NSLog(@"MAX(0, -1) = %d", MAX(0, -1));
La salida es:
[array count] - 1 = -1
MAX(0, [array count] - 1) = -1
MAX(0, -1) = 0
me salvó la salida del preprocesador con -save-temps, y se ve así:
NSArray* array = [NSArray array];
NSLog(@"[array count] - 1 = %d", [array count] - 1);
NSLog(@"MAX(0, [array count] - 1) = %d", ((0) > ([array count] - 1) ? (0) : ([array count] - 1)));
NSLog(@"MAX(0, -1) = %d", ((0) > (-1) ? (0) : (-1)));
Todos los paréntesis necesarios están ahí y [array count] - 1
no tiene efectos secundarios, por lo que los problemas de macro habituales no deberían aplicarse. ¿Tienes idea de lo que está pasando?
No me di cuenta de que el valor de retorno no estaba firmado, pero tiene sentido. ¡Gracias! –