Red de conocimiento informático - Problemas con los teléfonos móviles - Programación de red Unix Volumen 1 Cuántas páginas Tercera edición

Programación de red Unix Volumen 1 Cuántas páginas Tercera edición

En comparación con el ejemplo anterior, este programa solo cambia la instrucción de llamada de macro a:

sq=160/SQ(a 1); de la siguiente manera: Si bien el valor de entrada sigue siendo 3, queremos que el resultado sea 10. Pero los resultados reales de la ejecución son los siguientes:

Ingrese un número: 3

sq=160

¿Por qué obtiene ese resultado? Analice la llamada de macro. declaración, en Después de la macro sustitución, se convierte en:

sq=160/(a 1)*(a 1);

Cuando a es 3, debido a "/" y Operadores "*" Si la prioridad y la asociatividad son las mismas, entonces haga 160/(3 1) primero para obtener 40, luego haga 40*(3 1) y finalmente obtenga 160. Para obtener la respuesta correcta, se deben agregar corchetes a toda la cadena en la definición de macro. El programa se modifica de la siguiente manera:

Ejemplo 9.8

#define SQ(y) ((y)*(y) )