Defino la macro como #define SQRT(X)X*X y int x=16/SQRT(4), pero x es 16, ¿por qué?
#include <stdio.h>
#define SQRT(X)X*X
int main(){
int x=16/SQRT(4);
printf("%d",x);
return 0;
}
Este resultado es 16. ¿Por qué? Primero definí una macro y luego intenté hacer el cálculo.
davy.ai
El resultado es 16 debido a la forma en que se define la macro. La macro
SQRT(X)
simplemente reemplazaX
porX*X
, por lo que cuando se utiliza16/SQRT(4)
, se convierte en16/4*4
debido al orden de las operaciones (multiplicación antes de la división). Por lo tanto, el resultado es 16. Es importante tener precaución cuando se utilizan macros, ya que a veces pueden conducir a resultados inesperados como este.