Visual Studio 2015-编译器警告(等级2)C4146

忍者

我的代码中包含以下行

signed int test_case= -2147483648;

会产生错误:

C4146一元减运算符应用于无符号类型,结果仍为无符号

但这仍然是带符号整数类型的数据范围:

__int32已签名,已签名int,int –2,147,483,648至2,147,483,647

奇怪的是将它分配为有符号的long会给出相同的错误,即

signed long test_case= -2147483648;

下面的更改将编译确定:

signed int test_case= -2147483647;

signed int test_case= 2147483649;

signed long test_case= -214748364800;
  • 有人看到过Visual Studio 2015编译器的此问题吗?
  • 如何定义数据类型?
  • 如何检查范围?
  • 为什么似乎忽略了“已签名”分配?

谢谢

乌玛·赫尔法维

由于它是编译器错误,因此此答案特定于MSVC从iso C ++角度来看,这是错误的有关正确和标准的答案,请参见@Bathsheba答案。(我鼓励OP接受正确的答案,而不是为将来的读者使用此答案)。


MSDN

评估数字2147483648。因为它大于2147483647的最大整数值,所以2147483648的类型不是int,而是unsigned int。

换句话说,编译器将对-2147483648进行处理,-2147483648不是进行处理-2147483648因此该2147483648部分被认为是unsigned int因为它大于int然后编译器应用-导致该警告运算符。

解决方案:

auto test_case= -2147483648ll;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Visual Studio 2015中的编译器是什么

来自分类Dev

Visual Studio 2015-缺少64位编译器

来自分类Dev

Visual Studio 2015的C ++标准

来自分类Dev

如何在Visual Studio 2015中使用roslyn C#编译器?

来自分类Dev

如何停止C#编译器输出在Visual Studio 2015输出窗口中换行?

来自分类Dev

Visual Studio 2015更新1中C ++的内部编译器错误

来自分类Dev

可能是Visual Studio 2015中的C#编译器错误

来自分类Dev

可能的Visual Studio 2015 C ++编译器和IntelliSense错误

来自分类Dev

未触发Visual Studio 2015警告

来自分类Dev

使用 Visual Studio Shell (Isolated) 2015 编译

来自分类Dev

如何使Visual Studio 2015 C ++项目与Visual Studio 2010兼容?

来自分类Dev

Visual Studio 2015缺少的模拟器

来自分类Dev

Visual Studio 2015调试器崩溃

来自分类Dev

Visual Studio 2015图标编辑器

来自分类Dev

是否可以将Visual C ++ v120编译器工具集添加到Visual Studio 2015?

来自分类Dev

Visual Studio 2015企业更新2 iso

来自分类Dev

Freetype 2,Building Visual Studio 2015

来自分类Dev

Visual Studio 2015 C ++的助手

来自分类Dev

使用C和Visual Studio 2015的ANSI

来自分类Dev

Visual Studio 2015中的C代码错误

来自分类Dev

Visual Studio 2015的AllMargins

来自分类Dev

与Visual Studio 2015的果酱

来自分类Dev

Visual Studio 2015

来自分类Dev

卸载Visual Studio 2015

来自分类Dev

visual-studio-2015 Typescript编译器无法从外部libarry编译d.ts文件

来自分类Dev

如何在ANSI C中使用Visual Studio 2015编程(作为编辑器和编译器)?

来自分类Dev

安装Visual Studio 2015是否会更改VS 2013使用的编译器?

来自分类Dev

Visual Studio 2015-编译器在大流量调用时提供堆栈溢出

来自分类Dev

Visual Studio 2015 的 r 工具中的 Rcpp 编译器错误

Related 相关文章

热门标签

归档