当前位置:  开发笔记 > 编程语言 > 正文

为什么MSVC选择长期为-2147483648的类型?

如何解决《为什么MSVC选择长期为-2147483648的类型?》经验,为你挑选了1个好方法。

我的片段:

auto i = -2147483648;
int j = 3;
std::swap(i, j); // Compile error about mismatched types here. 

编译器声明文字i是a long long.这是为什么?-2147483648适用于intMSVC x64.

我的编译器是MSVC,目标是64位.



1> Bathsheba..:

与流行的看法相反,-2147483648 不是文字:C++不支持负文字值.

事实上,它是一个编译时可评估的常量表达式,文字 2147483648 的一元否定组成.

在具有32位ints和longs的MSVC x64上,2147483648对于其中任何一个都太大,因此它会故障转移到long long您观察到的类型.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有