Este es un programa normal de rutina C que descubrí en un banco de preguntas. Se muestra a continuación:El uso de resultados de macro en resultados incorrectos cuando se usa como parte de una expresión matemática más grande, ¿por qué sucede esto?
#define CUBE(p) p*p*p
main()
{
int k;
k = 27/CUBE(3);
printf("%d", k);
}
Según mi comprensión y el conocimiento del valor de K debe ser al menos 1 CUBO (3) sería reemplazado por 3 * 3 * 3 durante el procesamiento previo y después de la compilación posterior sería dar el valor de 1, pero en su lugar ha mostrado el valor de 81, lo que me ha hecho sentir curiosidad por saber cómo sucedió.
¿Alguien puede justificar la respuesta del 81 a esta pregunta anterior.
Simplemente reemplace 'CUBE (3)' en su línea 'k = ...' por '3 * 3 * 3' y verá cuál es su expresión. –
¿Qué idioma es el que hace que las "dudas" parezcan sinónimos de "problema" o "pregunta"? – Ether
@Ether: Como indio, definitivamente puedo decir que somos nosotros. ¡Aprendí de la manera difícil yo mismo! Una vez, mi profesor me dijo: "¿Tiene alguna duda sobre la pregunta o sobre la pregunta?" Espero que no dudes de mí cuando digo eso. :-) –