converting int to uint8_t

Johan Elmander picture Johan Elmander · Jul 26, 2013 · Viewed 66.4k times · Source

is it a correct way to convert an int value to uint8_t:

int x = 3; 
uint8_t y = (uint8_t) x;

assume that x will never be less than 0. Although gcc does not give any warning for the above lines, I just wanted to be sure if it is correct to do it or is there a better way to convert int to uint8_t?

P.S. I use C on Linux if you are going to suggest a standard function

Answer

ouah picture ouah · Jul 26, 2013

It is correct but the cast is not necessary:

uint8_t y = (uint8_t) x;

is equivalent to

uint8_t y = x;

x is implicitely converted to uint8_t before initialization in the declaration above.