#include <stdio.h>
int clkRate()
{
return 2000;
}
const int MILLISECONDS_PER_SECOND = 1000;
#define MS_TO_TICKS(ms) ( ( (float)(ms)/ MILLISECONDS_PER_SECOND) * clkRate() )
void convertAndPrint(int ms)
{
int ticksInt;
unsigned ticksUint;
double ticksDbl;
float ticksFlt;
ticksInt = MS_TO_TICKS(ms);
ticksUint= MS_TO_TICKS(ms);
ticksFlt = MS_TO_TICKS(ms);
ticksDbl = MS_TO_TICKS(ms);
printf("Milliseconds: %i\n", ms
); printf("Expected val: %i\n",ms
*2); "Unsigned Int: %2u\n"
"Floating Pnt: %.13f\n"
"Double Precn: %.13f\n"
"Direct Macro: %.13f\n",ticksInt,ticksUint,ticksFlt, ticksDbl, MS_TO_TICKS(ms));
}
void weirdConversionDemo(void)
{
convertAndPrint(7);
convertAndPrint(10);
}
int main(void) {
weirdConversionDemo();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgoKaW50IGNsa1JhdGUoKQp7CglyZXR1cm4gMjAwMDsKfQoKCgpjb25zdCBpbnQgTUlMTElTRUNPTkRTX1BFUl9TRUNPTkQgPSAxMDAwOwojZGVmaW5lIE1TX1RPX1RJQ0tTKG1zKSAoICggKGZsb2F0KShtcykvIE1JTExJU0VDT05EU19QRVJfU0VDT05EKSAqIGNsa1JhdGUoKSApCgoKdm9pZCBjb252ZXJ0QW5kUHJpbnQoaW50IG1zKQp7CglpbnQgIHRpY2tzSW50OwoJdW5zaWduZWQgdGlja3NVaW50OwoJZG91YmxlIHRpY2tzRGJsOwoJZmxvYXQgdGlja3NGbHQ7CgkKCXRpY2tzSW50ID0gTVNfVE9fVElDS1MobXMpOwoJdGlja3NVaW50PSBNU19UT19USUNLUyhtcyk7Cgl0aWNrc0ZsdCA9IE1TX1RPX1RJQ0tTKG1zKTsKCXRpY2tzRGJsID0gTVNfVE9fVElDS1MobXMpOwoJCglwcmludGYoIk1pbGxpc2Vjb25kczogJWlcbiIsIG1zKTsKCXByaW50ZigiRXhwZWN0ZWQgdmFsOiAlaVxuIixtcyoyKTsKCXByaW50ZigiU2lnbmVkIEludCAgOiAlMmlcbiIKCQkgICAiVW5zaWduZWQgSW50OiAlMnVcbiIKCQkgICAiRmxvYXRpbmcgUG50OiAlLjEzZlxuIgoJCSAgICJEb3VibGUgUHJlY246ICUuMTNmXG4iCgkJICAgIkRpcmVjdCBNYWNybzogJS4xM2ZcbiIsdGlja3NJbnQsdGlja3NVaW50LHRpY2tzRmx0LCB0aWNrc0RibCwgTVNfVE9fVElDS1MobXMpKTsKCn0KCnZvaWQgd2VpcmRDb252ZXJzaW9uRGVtbyh2b2lkKQp7CgoJCgljb252ZXJ0QW5kUHJpbnQoNyk7CglwcmludGYoIlxuXG5cblxuIik7Cgljb252ZXJ0QW5kUHJpbnQoMTApOwoJCn0KCgppbnQgbWFpbih2b2lkKSB7Cgl3ZWlyZENvbnZlcnNpb25EZW1vKCk7CglyZXR1cm4gMDsKfQo=