上下两部分结果不同, 很神奇吧 ?
查阅头文件发现, strlen 返回值 是 size_t 类型的, 就是 usigned long long 类型, 两者做差是不同的.
所以写程序的时候就尽量避免 减法运算, 比如比较 a-5 和 b 的大小
if ( a-5 > b ) 就尽量写成 if ( a > b+5 )
当然, 这是对于无符号类型来说
我们来打破砂锅问到底, 这里就涉及 无符号整数做差的 问题,
计算机内部运算全都是补码运算, 我们来举个例子 50 + 100
50 的二进制补码是: 00000000|00000000|00000000|00110010
100的二进制补码是: 00000000|00000000|00000000|01100100
4294967246的补码是 11111111|11111111|11111111|11001110
50 - 100, 就是 50 + (-100)
50 的二进制补码是: 00000000|00000000|00000000|00110010
100的二进制原码是: 00000000|00000000|00000000|01100100
100的二进制补码是: 11111111|11111111|11111111|10011011
-50的二进制原码是: 11111111|11111111|11111111|10010110