An easy way to eliminate the warnings is to avoid using -Wconversion in GCC. I think you have to enable this option manually, but if not, you can use -Wno-conversion to disable it. You can enable warnings for sign and FP precision conversions via [other options][1], if you still want those.

The -Wconversion warnings are almost always false positives, which is probably why not even -Wextra enables it by default. A [Stack Overflow question][2] has a lot of suggestions for good option sets. Based on my own experience, this is a good place to start:

>-std=c99 -pedantic -Wall -Wextra -Wshadow

Add more if you need them, but odds are you won't.

If you must keep -Wconversion, you can shorten your code a bit by only typecasting the numeric operand:

    value16 <<= (uint16_t)8;
    value8 += (uint8_t)2;

That's not easy to read without syntax highlighting, though.


  [1]: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
  [2]: http://stackoverflow.com/questions/154630/recommended-gcc-warning-options-for-c