例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