数据类型在c ++中进行转换

时间:2015-02-19 07:42:36

标签: c++ casting

我最近一直在使用很多,但我实际上并不知道某些演员会做些什么。这可能是一些非常基本的东西,但我只是没有得到它。

这些有何不同?

*(DWORD*)VAR;
(DWORD)VAR;// changes VAR to DWORD
(DWORD*)VAR;//Changes pointer VAR to DWORD
(DWORD)*VAR;//Changes pointer VAR to DWORD

根据MSDN

const char *pCast = myStr; // or (const char *)myStr;
(DWORD*)VAR is the same as DWORD *VAR which is also the same as (DWORD)*VAR

2 个答案:

答案 0 :(得分:0)

  • *(DWORD*)VAR;VAR投射到指向DWORD的指针并返回存储在那里的值。
  • (DWORD*)VAR;VAR投射到指向DWORD
  • 的指针
  • (DWORD)VAR;VAR投射到DWORD
  • (DWORD)*VAR;假设VAR是一个指针,检索存储在那里的值并将值转换为DWORD

答案 1 :(得分:0)

从右到左阅读

*(DWORD*)VAR;
- 阅读VAR(应该是指针)
- 施放到“指向无符号长”的指针 - 解除引用(结果是无符号长左值)

(DWORD*)VAR;
- 阅读VAR(应该是指针)
- 强制转换为“无符号长指针”(结果是无符号长指针)

(DWORD)VAR;
- 阅读VAR
- 强制转换为“unsigned long”(结果是无符号长rvalue)

(DWORD)*VAR;
- 阅读VAR(应该是指针)
- 解除引用
- 强制转换为“unsigned long”(结果是无符号长rvalue)