考虑以下代码:
float d = 3.14f;
int i = 1;
auto sum = d + i;
根据的说法,在将i添加到float时,应该将其转换为d。然而,当我实际运行代码时,我发现sum是4。为什么会发生这种情况?
有趣的是,当我显式地将编译器置于C11模式时,我发现sum是4.14。C11标准更改了哪些影响结果的规则?
如果我使用C++编译器编译相同的代码,会发生什么?
Straustrup在他的书“The C++ programming language”中谈到了模板参数正在传递而不丢失信息,“模板可以传递参数类型而不会丢失信息;
他说失去这里的信息是什么意思?
template <typename T>
T sum (T a, T b)
{
return a + b;
}
int main ()
{
long l = 212;
sum<short> (l, l);
}
Visual C++ 11编译器返回警告
warning C4244: 'argument' : conversion from
我很难理解可供我使用的不同编译器。
我主要使用Xcode编写和编译,在Xcode的首选项中,有以下所有用于C++编译的选项:
C++语言方言:
C++98-std=c++98通过C++14-std=c++14
GNU++98-std=gnu++98通过GNU++14-std=gnu++14
C++标准库:
libstdc++ (GNU C++标准库)
libc++ (具有C++11支持的LLVM C++标准库)
1. Can someone explain what exactly all of that ^ is?
2. I understand that
我正在工作的项目,其中包含C++文件和C文件。在代码::块中,我在项目构建选项中选择了以下复选框-std=c++11。
然后得到以下警告。
||warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C [enabled by default]|
如果我也选中-std=c99的复选框,
我将得到一个额外的警告如下。
||warning: command line option ‘-std=c99’ is valid for C/ObjC but not for C++ [en
我正在创建一个c++ UWP应用程序,我希望这个应用程序是c++/WinRT,因为我看到c++/cx不再受支持了。
我就是这样创建我的应用程序的。
VS 2017年->文件->新->项目..。-> Visual C++ -> Windows通用->空白应用程序(通用Windows)
对于这个基本问题,我很抱歉,但我找不到我的应用程序是否是c++/WinRT。