Rec*_*ker 3 c++ type-conversion static-cast
好的,所以我试着这样做
int b;
char x = 'a';
//Case 1
b = static_cast<int>(x);
std::cout<<"B is : "<<b<<std::endl;
//Case 2
b = *(int*)&x;
std::cout<<"B is changed as :: "<< b <<std::endl;
Run Code Online (Sandbox Code Playgroud)
现在我知道在第2种情况下,第一个字节x被重新解释为认为它是一个整数并且位模式被复制到b其中给出了一些垃圾,而在情况1中它只是将值转换char为int.
除此之外,这两者有什么不同吗?
Ker*_* SB 12
第一个只是转换值:int b = x;与...相同int b = static_cast<int>(x);.
第二种情况假装int生活在实际上生活的地方x,然后试图阅读int.这是彻头彻尾的未定义行为.(例如,一个人int可能占用的空间比一个人多char,或者可能是char生活在一个不能生活的地址int.)