Hi All, I am experiencing a basic problem in the arithametic of the instrucation A = ((B-C)*100)/204 during execution of the instruction, if the result of (B-C)*100 is greater than 16 bits what will happen? for avoiding data loss do I have to declare it as 32 bit variable or the proceesor will handle it without changing the size? Variable A is declared as 16 bit. do I have to use both B and C 32 bit if i conditionally change the instrucation as A = ((C-B)*100)/204 during execution ? my code will look like this if (B>C) A = ((B-C)*100)/204; else if (C>B) A = ((C-B)*100)/204 ; my processor is C8051F020 compiler is C51 best regards Deepak
I have defined 100 in that code with a name HUNDRED to avoide usage of 'magic number'. That makes no sense. Naming 100 'HUNDRED' serves no purpose. If you were to change it, you would have to change the name as well. I have not studied your app, but names like CORRECTION_FACTOR, CONVERSION_CONSTANT comes to mind. If it under ALL circumstances has to be 100, then leave it as that, if it may change, give it 'functional name' not 'value name' Erik