为什么我对此代码发出警告:
#include <cstdint>
int main()
{
int i = 1;
int64_t i64;
i64 = 1 << i;
}
警告C4334:'&lt;&lt;' :32位移位的结果隐式转换为64位(意图是64位移位?)
但不是这个:
#include <cstdint>
int main()
{
int i = 1;
int64_t i64 = 1 << i;
}
? 在vs2013 / 2015上进行了测试。
答案 0 :(得分:0)
我看到与vs2012的差异。我不认为它有充分的理由 - 希望在新版本的Visual C ++中都会发出警告。
答案 1 :(得分:0)
MSVS 2015 Upd.2:第二种情况(初始化时)将触发C4334警告。