【发布时间】:2012-12-06 22:13:20
【问题描述】:
好的,所以我尝试这样做
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。
除此之外,这两者还有什么不同吗?
【问题讨论】:
-
一个是未定义的行为,另一个不是。
标签: c++ type-conversion static-cast