有符号整型常量溢出

int 最大值:2147483647

long long int 最大值:9223372036854775807

long long int n = 2000 * 2000 * 2000 * 2000;    //溢出
long long int n = 16000000000000;              //正常显示

原因:

表达式1右边计算的值为int,16000000000000 大于2147483647,所以溢出

所以想要正确的结果需要把计算值(而不是结果)转为long long,比如

 long long int n = (long long)2000 * 2000 * 2000 * 2000;
 long long int n = 2000LL * 2000 * 2000 * 2000;
 long long int n = static_cast<long long>(2000) * 2000 * 2000 * 2000;

 


版权声明:本文为zhao3132453原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。