DWORD 格式说明符

6 c++

这是this的后续问题。

它可以是DWORD相同int一些平台(该如何检查?)?如果是这样的话,那么这个:

  DWORD v1, v2, v3, Build;
  GetVersion(&v1, &v2, &v3, &Build);
  sprintf(VersionStr, "%d.%d.%d.%d", v1, v2, v3, Build);
Run Code Online (Sandbox Code Playgroud)

在那个平台上不是未定义的行为,对吗?

或者上面的代码总是和无处不在的UB?

如何检查是否DWORDint该平台上的相同?

(因为也许我在想在上面运行此代码的那台计算机上不是未定义的行为)

Rah*_*thi 5

在 32 位编译器上,可用于打印 DWORD 值的格式说明符是%lu. %ld如果要以十进制格式打印值,也可以使用。

您还可以参考一个线程:为什么在 C++ 中我们使用 DWORD 而不是 unsigned int?

  • 取决于编译器和目标平台。使用 GCC 并针对 64 位系统,`long` 是 64 位,而 `DWORD` 仍然是 32 位。 (2认同)
  • 所以我们可以对 OP 大喊:“不,这不是 **ALWAYS** UB”。更像是,“这取决于”:) (2认同)