Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么';t clang或gcc标记从double到int的隐式转换?_C++_Gcc_Clang_Implicit Conversion - Fatal编程技术网

C++ 为什么';t clang或gcc标记从double到int的隐式转换?

C++ 为什么';t clang或gcc标记从double到int的隐式转换?,c++,gcc,clang,implicit-conversion,C++,Gcc,Clang,Implicit Conversion,考虑以下代码: void f(int x) { std::cout << x << std::endl; } int main() { double x = 1.5; f(x); return 0; } 但这并不是那么有用。为什么这些编译器不对此强制转换发出警告?我使用的是OSX 10.8.3和gcc-4.2.1以及clang-425.0.28。面向后代: 为了避免隐式转换,请使用-Wconversion标志(它不包括在-Wall中)。

考虑以下代码:

void f(int x)
{
    std::cout << x << std::endl;
}

int main()
{
    double x = 1.5;
    f(x);
    return 0;
}
但这并不是那么有用。为什么这些编译器不对此强制转换发出警告?我使用的是OSX 10.8.3和gcc-4.2.1以及clang-425.0.28。

面向后代:


为了避免隐式转换,请使用-Wconversion标志(它不包括在-Wall中)。Clang实际上在-Weverything标志中包含了-Wconversion,但该标志启用的警告比大多数用户习惯的要多。

-Wconversion
标志,但只有gcc 4.3才支持它(在Clang下)-为什么该标志不包含在-Wall中?它可以为有效代码生成警告,而且有很多代码使用隐式转换。
f(1.5)