- 帖子
- 508
- 积分
- 1490
- 技术
- 87
- 捐助
- 0
- 注册时间
- 2008-7-17
|
还好你的帖子解锁了
就在此回复吧
if的数值比较与其它语言是一样的原理
核心都是减法运算
根据减法的差值判定大小
差值为正就是大于
为负就是小于
为零就是等于
而差值本身也是变量
也需要存储
也存在所有32位的双字值都有的-2^31~2^31-1的限定
因为3 - (-2147483645) 的结果超界
结果本来的正值变成负值(不完全是溢出)
本来的大于就变成了小于了
大正数的溢出问题
实际上是因为for /l本身含有加法运算
而你所设置的下限2147483647
是32位整数的最大值
在加1就成为负值
所以你的for的永远不会超限
成了“死循环” |
|