在下面的代码中,第2行和第3行之间有什么区别吗?在每种情况下,编译器会如何执行?char ch = 'A'; //line 1
int i = ch; //line 2
int j = (int) ch; //iine 3
通常,转换和转换(在C和C++中)有什么区别?
最佳答案
最终效果没有区别。
强制转换用于使用显式,通用的内置强制转换表示法进行转换。
尽管在某些情况下我们说“向上转换”是指从Derived *到Base *(或从Derived&到Base&)的隐式转换。
在某些情况下,可以定义新的强制转换符号。
上面的术语定义只是可操作的定义,也就是说,它不是您可以推断出某些东西是强制转换的定义。强制转换只是定义为强制转换的转换。 :-)例如,bool(x)
是强制类型转换,而!!x
既执行相同操作,又是显式表示法,则不是强制类型转换。
在C++中,您可以并且最好使用命名的类型转换static_cast
,const_cast
,dynamic_cast
和reinterpret_cast
,对于显式内置的算术内置类型可能会异常(exception)。原因之一是,C样式强制转换(Other*)p
或使用C++专用表示法OtherPtr( p )
可以根据上下文执行不同的操作,尤其是当代码稍有更改时,C样式强制转换的含义也可以更改。另一个原因是,很难搜索C样式转换。
就是说,最好的办法是尽可能避免进行强制转换。
干杯,……
关于c++ - C和C++ : Difference between Casting and Conversion,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4344402/