11

int值转换为uint8_t

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

假设 x 永远不会小于 0。虽然gcc没有对上述行发出任何警告,但我只是想确定这样做是否正确,或者是否有更好的方法将 int 转换为 uint8_t?

PS 如果您要建议标准功能,我在 Linux 上使用 C

4

1 回答 1

18

这是正确的,但演员不是必需的:

uint8_t y = (uint8_t) x;

相当于

uint8_t y = x;

x在上面的声明中被隐式转换为 uint8_t初始化之前。

于 2013-07-26T13:28:27.457 回答