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的平台上,它应该并且确实发出警告。