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

Windows VC++ compiler allows an odd way of c style casting (or it may not be casting??)

本文关键字:转换 或者 VC++ 方式 许一种 Windows 样式 编译器      更新时间:2023-10-16

我知道最好避免C++程序中的c样式转换。

下面是一个非常简单的代码,它在 WindowsVC++ compiler上编译得很好(也成功运行。打印了数字)。但无法在C++ - GCCC++ - Clang上编译。

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

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

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

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

由于它在VC++中工作,因此在Windows 端的粗略实现是什么,以使上述代码段正常工作?(粗略猜测也很好。只是为了了解他们(Microsoft窗口)如何处理它。

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

这不是 c 样式的强制转换表达式,它是特定于 c++ 的,尽管不是很常用。它被称为功能风格铸造。

查看:显式类型转换(数字 2)

相关文章: