警告缩小转换范围(uint32 到 uint8)
Warning narrowing conversion (uint32 to uint8)
我有这个警告。你能帮我吗?
warning: narrowing conversion of ‘action’ from ‘uint32 {aka unsigned int}’ to ‘uint8 {aka unsigned char}’
如何安全地将 uint32 转换为 uint8 ?
谢谢
警告是正确的,这种转换具有潜在的危险(它会丢失 24 个更高的位)。
你可以通过使用显式强制转换来告诉编译器你真的想要这个[不安全]转换:
uint8_t my_byte_var = static_cast<uint8_t>(my_int32_var);
这应该禁止显示警告。
只有在使用列表初始化时才会出现缩小警告/错误,例如:
uint32_t action = 12345;
uint8_t val{action};
您可以只使用正常分配:
uint8_t val = action;
不过,缩小仍然会发生,因为12345
无法适应uint8_t
,所以你会剩下 9。如果您对此感到满意,那么这就是您的解决方案。如果没有,那么有一个警告是一件好事,因为您使用了错误的类型!
相关文章:
- 从值小于256的uint16到uint8的Endian安全转换
- 你能把一个向量<int64>投射到一个向量<uint8>吗
- SSCANF 进入 uint8 阵列失败
- memcpy 是将浮子打包到 uint32 中的标准方法吗?
- 警告C4018,包含int和UINT32,但不包含int和UCHAR
- 着色器将uint8投射到float,并将其重新解释回uint
- 将指针uint8覆盖到指针uint16
- 创建一个包含30亿个uint8元素的向量
- 将 Uint8(浮点AUDIO_F32)转换为int16_t(16 位 PCM)
- UINT8/16 /32/etc 和 INT8/16/32/etc 在 libtiff 中不起作用?
- 为什么 UInt64 变量不能包含大于 UInt32::Max 的值?
- C++:从 "const variable*" 转换为"uint32"会失去精度
- 从指针到 uint32 的类型转换
- 为什么当我使用双精度时,Qt<->Matlab 正确写入和读取我的字节,但存储 uint32 的字节不正确?
- uint32, int16, uint8 .为什么这些常用的数据类型没有进入标准
- 如何将UINT8*施放到UINT32
- 警告缩小转换范围(uint32 到 uint8)
- 如何将4个UINT8变量连接成一个UINT32变量?
- 如何在c++中将UINT8转换为UINT32 ?
- 将UINT32值转换为UINT8数组[4]