行,所以我试着这样做static_cast <int>(var)和*(int *)&var之间的区别是什么?
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;
现在我知道的情况下,2,x
第一个字节被重新解释认为它是一个整数,位模式被复制到b
这给一些垃圾和在情况1中,它仅将值从char
转换为int
。
除此之外,这两者之间是否有区别?
一个是未定义的行为,另一个不是。 – Mysticial