C++ 将int赋值为short(gcc)时没有警告

C++ 将int赋值为short(gcc)时没有警告,c++,gcc,compiler-warnings,implicit-conversion,C++,Gcc,Compiler Warnings,Implicit Conversion,我经常使用将“长”类型变量赋值给“短”类型变量,例如int到short或uint32\u t到uint8\u t。有一天,我决定使用gcc在我的代码中查找所有此类情况,但令我惊讶的是,gcc没有输出任何警告 int long_value; short short_value; std::cin >> long_value; // Example input: 32769 short_value = long_value; // MS Visual Studio complains h

我经常使用将“长”类型变量赋值给“短”类型变量,例如
int
short
uint32\u t
uint8\u t
。有一天,我决定使用gcc在我的代码中查找所有此类情况,但令我惊讶的是,gcc没有输出任何警告

int long_value;
short short_value;
std::cin >> long_value; // Example input: 32769
short_value = long_value; // MS Visual Studio complains here at warning level 4
std::cout << "Long: " << long_value << '\n'; // My example output: 32769
std::cout << "Short: " << short_value << '\n'; // My example output: -32767
int long_值;
短_值;
标准::cin>>长_值;//输入示例:32769
短值=长值;//微软VisualStudio在这里的投诉级别为警告级别4

我不能复制那个。使用GCC4.4.5和-Wconversion编译此代码,我得到

a.cc: In function ‘void f()’:
a.cc:7: warning: conversion to ‘short int’ from ‘int’ may alter its value

此功能是在GCC4.3版本中添加的。以前这是不可用的

我希望您使用的是gcc版本4.2或更低

证实了这一点


这个bug:也谈到了它。

是的,我也是使用4.5.2-Wconversion的。@icecrime:gcc当然需要编译它。在短于int的平台上,它应该并且确实发出警告。