I was working with some uint32_t variables, using shifts, like this:
uint32_t foo = 0;
for (...)
{
uint32_t v = // some value between [0, 31)
foo |= 1 << v;
}
This didn't work correctly for values of v greater than 15 until I changed the
line to:
foo |= 1UL << v;
From what I understand of C, it should've promoted 1 to long, but maybe it's a
signed-vs-unsigned issue? What's happening on an ATmega644A with this code?
TIA,
Rick
_______________________________________________
AVR-chat mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-chat