Windows VC ++编译器允许c样式转换的奇怪方式(或者它可能不会被转换??)

时间:2017-04-15 00:11:38

标签: c++ gcc visual-c++ clang

我知道在C ++程序中避免使用c样式转换总是更好。

以下是一个非常简单的代码,它在windows VC++ compiler上编译良好(也运行成功。打印数字)。但无法在C++ - GCCC++ - Clang上进行编译。

char c = 'A';
int num = unsigned char(c);

是的,它不是一种标准的转换方式,因此GCCClang编译时失败没有错。

但为什么VC++ (Microsoft Visual Studio)能够成功编译和执行?

它真的是投射概念还是其他一些编程概念允许它在VC++中工作?

正如VC++中所做的那样,为了使上面的代码有效,可以在Windows端粗略实现(粗略猜测也很好......只是为了理解它们(Microsoft Windows)如何处理它。)

注意:VC compiler(c编译器)无法编译上面的代码段。有趣的是VC++ compiler,编译和运行都很好。

1 个答案:

答案 0 :(得分:-1)

这不是一个c风格的强制转换表达式,它特定于c ++,虽然不是很常用。它被称为功能样式演员。

请注意:explicit type conversion(2号)