c++ - 为什么我会收到 1I64<<31 的警告?

标签 c++ c

为什么我会收到此代码的警告?

switch(iInput)
{
   ...
   case 1I64<<31:   return 31;  break;
   ...
}

1>C:\path-to-file.cpp(44) : 警告 C4309: 'case' : 常量值截断

1I64<<31 是 0x0000000080000000 (__int64) 所以这里没有截断, case 有最大值吗?

最佳答案

控制 switch 的表达式类型控制 case 标签将使用的表达式类型。

您需要在控制表达式中输入 __int64(或等效的)类型以消除警告。

关于c++ - 为什么我会收到 1I64<<31 的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5641805/

相关文章:

c++ - 只为一种widget设置样式

c++ - 我如何根据它们的值获取 std::map 的前 n 个键?

c++ - 反向迭代器未按预期工作

c - HDLC 扩展寻址

无法初始化链表

c - 文件结尾检测

c++ - 如何使用c在net snmp中发送v2陷阱

C++向下转换以撤消函数覆盖

c++ - 在 MFC CListCtrl 中获取项目文本的索引

c - 使用结构变量数组访问结构