当前位置: 代码迷 >> 综合 >> int型取值越限再分析
  详细解决方案

int型取值越限再分析

热度:21   发布时间:2024-01-26 03:11:03.0

 例1:

    long long mm;mm = 0x7fffffff+1 ;qDebug()<<mm;
输出结果是:-2147483648
分析:
long long 是占8个字节,0x7fffffff+1 是在long long 的范围内的。但是编译器显示是按照 int 32位类型来计算的。

原因是0x7fffffff 是在32位范围内,编译器默认是个32位整数,+1之后,就是-2147483648。

解决方法1:

强制类型转换:

    long long mm;mm = (long long)0x7fffffff+1 ;qDebug()<<mm;

输出结果:2147483648

解决方法2:
在常量后面加上后缀:
    long long mm;mm = 0x7fffffffLL+1 ;qDebug()<<mm;
输出结果:2147483648
  相关解决方案