We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Does anybody know, how one have to cast an operation correctly? And is it necessary to tell the compiler that a constant is unsined long
#define dword unsigned long unsigned char ucH; //hours unsigned char ucM; //minutes unsigned char ucS; //seconds dword ulTime; //Time in s GetTime(...); ulTime = ucS + ucM*60 + ucH*3600; [..]
ulTime = (dword)(ucS + ucM*60 + ucH*3600);
ulTime = ucS + (dword)ucM*60 + (dword)ucH*3600);
#define dword unsigned long unsigned char ucH; //hours unsigned char ucM; //minutes unsigned char ucS; //seconds dword ulTime; //Time in s ulTime = ucS + ucM * 60UL + ucH * 3600UL;
ucS and ucM are unsigned char, so they each have a maximum value of 255. 255 + 60 * 255 is 15555, well within the range of an int, so the constant sixty doesn't have to be an unsigned long. Ahhh. Yes. You are right about that. I noticed that the multiplication with 3600 would definitely be out of range and assumed that the multiplication with 60 would be as well (assuming that NOINTPROMOTE is used.) Jon