[Ovmsdev] SIM808/SIM908 GPS accuracy
Edward Cheeseman
cheesemanedward at gmail.com
Wed Feb 8 05:22:17 HKT 2017
I was about to complain that 128 fits into 8bits - but of course it doesn’t fit into a signed 8bit int. My bad.
> On 8/02/2017, at 10:14 AM, Tom Saxton <tom at idleloop.com> wrote:
>
> For the C18 compiler, an int is 8 bits. In C, all math is done in ints unless forced to a larger type by operands or casting. When you do (1<<7) in an 8-bit int, you shift the bit off the end of the int and get zero. The compiler didn't ignore your constant, it did exactly what it's supposed to do.
>
> You can fix it with a cast, like:
>
> ((long)1 << 7) or (1L << 7)
>
> Tom
More information about the OvmsDev
mailing list