将一个int
值转换为uint8_t
的方法是否正确:
int x = 3;
uint8_t y = (uint8_t) x;
假设x永远不会小于0。虽然gcc
对上述行没有任何警告,但我想确认这样做是否正确或者有更好的方法将int转换为uint8_t?
P.S. 我在Linux上使用C语言,如果您要建议标准函数。
将一个int
值转换为uint8_t
的方法是否正确:
int x = 3;
uint8_t y = (uint8_t) x;
假设x永远不会小于0。虽然gcc
对上述行没有任何警告,但我想确认这样做是否正确或者有更好的方法将int转换为uint8_t?
P.S. 我在Linux上使用C语言,如果您要建议标准函数。
这是正确的,但是类型转换不必要:
uint8_t y = (uint8_t) x;
等同于
uint8_t y = x;
x
在上面的声明中初始化之前被隐式转换为uint8_t
。
& 0xff
来防止它抱怨 :P - Drew McGowenint
可以适应于 short
。 - mohit
y = x;
即可。 - R.. GitHub STOP HELPING ICEuint8_t
溢出。 - Xaqqy = x;
而不是uint8_t y = x;
可能会引入一个错误,如果之前在作用域中已经声明了变量y
。 - Eric Postpischil