宏定义 :#define INT_MIN (-2147483647 - 1)
来源:互联网 发布:python 将字符串split 编辑:程序博客网 时间:2024/05/16 17:42
2的32次方为2147483648*2,0~(2147483648*2-1)这是32位机上无符号整数代表的范围。而32机的int范围为-2147483648~+2147483647
stackoverflow.com上有人提出这样一个问题:
if (-2147483648 > 0) std::cout << "true";else std::cout << "false";
这将输出true,
而下面的程序会输出false:
if (int(-2147483648) > 0) std::cout << "true";else std::cout << "false";
下面是对排名第一答案的翻译:
-2147483648不是一个“数”。实际上,-2147483648是一个表达式:一个正整数2147483648和一个一维运算符“-”。对于32位机,2147483648明显已经超过了int的范围。如果long int有“更大的范围”,编译器会自动的假定2147483648为long int型。(C++11的编译器会假定为long long int型)。这样才会得到用户想要的“负的2147483648”
然而很明显,如果long int和int一样,就不会存在“更大的范围”了。这样的话,2147483648溢出了,你的程序的行为是未定义的。
0 0
- 宏定义 :#define INT_MIN (-2147483647 - 1)
- Why define INT_MIN (-INT_MAX - 1)
- 为什么宏INT_MIN要写成-2147483647-1
- (转)为什么宏INT_MIN要写成-2147483647-1
- 宏定义define用法
- 宏定义#define
- Embedded - Define 宏定义
- 使用宏定义DEFINE
- #define宏定义中的#,##,@#,\
- C宏定义#define
- ios #define 宏定义
- 宏定义define
- 宏定义#define
- 宏定义#define整理
- C++宏定义#define
- 常用宏定义 #define
- define宏定义中的#,##
- 058.Define 宏定义
- swift 学习记录(实例方法)
- union和union all的区别
- 学习资源链接
- Rsync实现Linux-Windows文件同步
- Android 录制视频、音频时弹出权限框。
- 宏定义 :#define INT_MIN (-2147483647 - 1)
- 支付宝集成
- androidPN java.lang.NoClassDefFoundError: org.androidpn.client.解决方法
- MyBatis一对多和多对一
- JPA的查询语言—JPQL的简单查询
- Qt Quick QML
- Java工程师成神之路~
- Java中apache下面FTPClient主动模式和被动模式
- JPQL的命名查询@NamedQuery