C++ 中的数据类型转换
Datatype casting in c++
我最近一直在使用演员表,但我实际上并不知道某些演员表是做什么的。这可能是一些非常基本的东西,但我就是不明白。
这些有什么区别?
*(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
*(DWORD*)VAR;
将 VAR
转换为指向 DWORD
和 return 存储在那里的值的指针。
(DWORD*)VAR;
将 VAR
转换为指向 DWORD
. 的指针
(DWORD)VAR;
将 VAR
转换为 DWORD
.
(DWORD)*VAR;
假定 VAR
是一个指针,检索存储在那里的值并将该值转换为 DWORD
.
从右到左阅读它们
*(DWORD*)VAR;
- 阅读VAR
(应该是一个指针)
- 转换为 "pointer to unsigned long"
- 取消引用(结果是无符号长左值)
(DWORD*)VAR;
- 阅读VAR
(应该是一个指针)
- 转换为 "pointer to unsigned long"(结果是无符号长指针)
(DWORD)VAR;
- 阅读 VAR
- 转换为 "unsigned long"(结果为无符号长右值)
(DWORD)*VAR;
- 阅读VAR
(应该是一个指针)
- 取消引用
- 转换为 "unsigned long"(结果为无符号长右值)
我最近一直在使用演员表,但我实际上并不知道某些演员表是做什么的。这可能是一些非常基本的东西,但我就是不明白。
这些有什么区别?
*(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
*(DWORD*)VAR;
将VAR
转换为指向DWORD
和 return 存储在那里的值的指针。(DWORD*)VAR;
将VAR
转换为指向DWORD
. 的指针
(DWORD)VAR;
将VAR
转换为DWORD
.(DWORD)*VAR;
假定VAR
是一个指针,检索存储在那里的值并将该值转换为DWORD
.
从右到左阅读它们
*(DWORD*)VAR;
- 阅读VAR
(应该是一个指针)
- 转换为 "pointer to unsigned long"
- 取消引用(结果是无符号长左值)
(DWORD*)VAR;
- 阅读VAR
(应该是一个指针)
- 转换为 "pointer to unsigned long"(结果是无符号长指针)
(DWORD)VAR;
- 阅读 VAR
- 转换为 "unsigned long"(结果为无符号长右值)
(DWORD)*VAR;
- 阅读VAR
(应该是一个指针)
- 取消引用
- 转换为 "unsigned long"(结果为无符号长右值)