Właśnie przechodziłem przez pewien kod, który często jest zadawany w wywiadach. Wpadłem na pewne pytania, czy ktoś może mi w tym pomóc?Kwadrat liczby definiowanej przy użyciu #define
Jestem całkowicie zdezorientowany na to teraz,
#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();
}
Wyjście jest:
4
64
16
Zastanawiam się, dlaczego square(4)
Zwraca 1, gdy dzieli ją? Chodzi mi o to, jak mogę uzyskać wartość 4 i 64 kiedy ją dzielę, ale kiedy jestem bezpośrednio wykorzystany otrzymuję !!?
Należy zauważyć, że #define kwadrat (x) x * x jest klasycznym C baddy. Spróbuj pętli z kwadratem (x ++); – Jaydee
Jeśli naprawdę chcesz się pomylić i nie przeczytałeś jeszcze żadnej z odpowiedzi, spróbuj zastąpić 'square (4)' wszędzie za pomocą 'square (3 + 1)'. – JeremyP
To był prosty problem z priorytetem. –