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 GetTime(...); ulTime = ucS + ucM*60 + ucH*3600;
(ulong) = (uchar) + (uchar) * (int) + (uchar) * (int);
char * int = int char * long = long int * long = long int * int = int
(ulong) = (uchar) + (uchar) * (int) + (uchar) * (int); /* Is reduced to */ (ulong) = (uchar) + (int) + (int); /* Which is reduced to */ (ulong) = (int) + (int); /* Which is further reduced to */ (ulong) = (int);
ulTime = ucS + ucM * 60UL + ucH * 3600UL;
(ulong) = (uchar) + (uchar) * (ulong) + (uchar) * (ulong); /* Is reduced to */ (ulong) = (uchar) + (ulong) + (ulong); /* Which is reduced to */ (ulong) = (ulong) + (ulong); /* Which is further reduced to */ (ulong) = (ulong);
Hi Jon, thank you for your detailed reply. I will check whether your suggestion will work in all cases or not :-). I hope fervently that C166 will keep to ANSI-C! And thanks to the other repiers too - of course! ...Leo
I will check whether your suggestion will work in all cases or not :-). I hope fervently that C166 will keep to ANSI-C! The C166 compiler is ANSI compliant as tested using the test suites that we have. My suggestion is one of many ways to do things, but it should work with ANY ANSI C compilter. Jon
View all questions in Keil forum