【发布时间】:2017-02-20 00:59:41
【问题描述】:
我有一个UINT8 类型的值,我想将其设为UINT32。
我的以下代码会被认为是正确、有效、高效和安全的吗?
UINT32 convU8toU32(UINT8 *number) {
UINT32 result = *number;
return *result;
}
请注意,我是来自 Java 世界的 C++ 新手。
【问题讨论】:
-
现在你的代码是“正确的”(直到
return *result;应该是return result;),但为什么要使用指针而不是简单的UINT8? -
@M.A.Kishawy 如果您担心内存使用情况,请不要将 8 位整数替换为 32/64 位指针。 ;) 但无论如何,人们通常不必担心那些“浪费”的内存量。
-
@M.A.Kishawy 编译器是一个比你更好的代码生成器。不要考虑“内存使用”,尤其是在这里。无论如何,该参数很可能最终会出现在寄存器中(或者编译器可能只是内联它,如果它真的很聪明,它甚至可以在查看调用者如何使用它时将其设为无操作)。另外,至少在 PC 上,你有千兆字节的内存。
-
@PeteBecker 内置无符号整数类型,宽度分别为 8 位和 32 位,我大胆假设。如果错了,请纠正我OP。
-
@JasonC - 没有什么比现实世界更反常了。工程应该基于知识,而不是未陈述的假设。
标签: c++ pointers visual-c++ int type-conversion