Estaba revisando cierto código que se pregunta con frecuencia en las entrevistas. Se me ocurrieron ciertas preguntas, si alguien puede ayudarme con respecto a esto.Cuadrado de un número que se define usando #define
estoy totalmente confundido en este momento,
#include <stdio.h>
#include <conio.h>
#define square(x) x*x
main()
{
int i, j;
i = 4/square(4);
j = 64/square(4);
printf("\n %d", i);
printf("\n %d", j);
printf("\n %d", square(4));
getch();
}
La salida es:
4
64
16
Me pregunto, ¿por qué square(4)
retorno 1 cuando la dividí? Quiero decir, ¿cómo puedo obtener el valor 4 y 64 cuando lo divido, pero cuando lo uso directamente obtengo !!?
Solo para tener en cuenta que #define square (x) x * x es un clasdy C baddy. Pruebe un ciclo con cuadrado (x ++); – Jaydee
Si realmente quiere confundirse y aún no ha leído ninguna de las respuestas, intente reemplazar 'square (4)' en todas partes con 'square (3 + 1)'. – JeremyP
Este fue un problema de precedencia simple. –