Trying to get some code working and the modulus doesn’t want to do what I want it to do… which means I have it wrong.
I have unsigned chars that I’m trying to seperate out hours/minutes/seconds into so I can display them on the screen in Ascii.
The variable secs is anunsigned int. Everything else is anunsigned char. I want the results in unsigned chars so not to waste memory. Working in an embedded environment.
Anyone care to look at the code snippet and tell me what I’ve done wrong?
hours = secs/3600.0;
minutes =(secs/60.0)-(hours*3600);
seconds =secs-(hours*3600)-(minutes*60);
sec_ones =(unsigned char)((seconds%10));
sec_tens =(unsigned char)((seconds-sec_ones)%100);
min_ones =(unsigned char)(minutes%10);
min_tens =(unsigned char)((minutes-min_ones)%100);
hrs_ones =(unsigned char)(hours%10);
hrs_tens =(unsigned char)((hours-hrs_ones)%100);
should be
Other than that, it works for small enough input: http://ideone.com/VPKP1
There are some things that I’d change, though. For example, there’s no point doing a double division and then assigning the result back to
unsigned char, you might as well just do integer division.