Hap*_*tal 0 c++ types explicit
我在一本书中读到了这一点:
//: C03:SimpleCast.cpp
int main() {
int b = 200;
unsigned long a = (unsigned long int)b;
} ///:~
Run Code Online (Sandbox Code Playgroud)
"强制转换是强大的,但它可能会引起麻烦,因为在某些情况下它会迫使编译器将数据视为(例如)比实际更大,因此它会在内存中占用更多空间;这会占用其他数据这通常在投射指针时发生,而不是在制作如上所示的简单投射时."
现在请你提供一个示例,其中转换指针可以践踏其他数据?
int main(void)
{
short int a = 5;
short int b = 7;
*(long int*)&a = 0;
}
Run Code Online (Sandbox Code Playgroud)
假设sizeof(long) > sizeof(short),并且假设编译器a之前放入堆栈b,b将被删除.