This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Arithametics

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

Parents
  • 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

Reply
  • 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

Children
No data