Red de conocimiento informático - Aprendizaje de programación - Desbordamiento de división en KEIL c

Desbordamiento de división en KEIL c

Así es, en el compilador, para ahorrar tiempo en la ejecución del programa, para el cálculo de constantes, el compilador calculará y proporcionará los resultados al programa sin que el programa realice el cálculo.

int a;

a = 10000/2/25;

Cuando el programa se está ejecutando, a es 200 y no es necesario calcular 10000 /2/25.

De manera similar, 12000000/(32*12*4800) no se calcula cuando el microcontrolador se está ejecutando, sino que lo calcula el compilador en el momento de la compilación. El compilador calcula según el tipo de datos predeterminado. Si su Keil es un microcontrolador 51, calcula según el entero de 16 bits, que es el tipo corto sin signo predeterminado.

Cuando tengas un tipo de punto flotante, debido a que debes agregar un símbolo que obligue al compilador a calcular números de punto flotante, modifícalo de la siguiente manera:

aaa = 12000000.0F/(32 *12*4800 );

Después de agregar una F y escribir el punto decimal, el compilador lo calculará como un número de punto flotante.