在下面的代码中,第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_castconst_castdynamic_castreinterpret_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/

10-13 01:58