marky
2021-01-04T03:39:55+00:00
收到了蚂蚁给员工发的新年礼物,但对其中的支付宝第一行代码有一个很业余、不成熟、但应该很快可以有解答的疑问:
define('PAY_OK', -1); //这里为什么状态码是负数?
CTO苗人凤回复:
哈哈,抱歉,此代码应该是产自于16年前的某深夜,为什么这么写我也忘记了。。有可能类似“高端的食材,往往需要简单的烹饪”一样。哈哈哈。
高亮回复:
-1的补码是0xFFFFFFFF
类似这么定义
define('PAY_OK', 0xFFFFFFFF)
*******************************************************
一般大家定义success,都是用0
在int32下:
用十六进制表示就是
0x00000000 
二进制表示就是
00000000 00000000 00000000 00000000
再来看看-1
用十六进制表示就是
0xFFFFFFFF
二进制表示就是
11111111 11111111 11111111 11111111
能担得起success这种唯一、霸气、精美绝伦的响应码的,不仅仅是0!!-1完完全全配得起!!
而且,通常,0表示false,1表示true
现在回头想想:在那个互联网垦荒时代,当你千辛万苦调试了支付宝第一个功能,响应码直接将32个1,32个true甩在你脸上,真是爽到极点!!!
好吧。。。虽然说实话我也不知道为啥定义成-1,但编着编着,我有点心动了。。。
各位瞧瞧,怎么解?
define('PAY_OK', -1); //这里为什么状态码是负数?
CTO苗人凤回复:
哈哈,抱歉,此代码应该是产自于16年前的某深夜,为什么这么写我也忘记了。。有可能类似“高端的食材,往往需要简单的烹饪”一样。哈哈哈。
高亮回复:
-1的补码是0xFFFFFFFF
类似这么定义
define('PAY_OK', 0xFFFFFFFF)
*******************************************************
一般大家定义success,都是用0
在int32下:
用十六进制表示就是
0x00000000 
二进制表示就是
00000000 00000000 00000000 00000000
再来看看-1
用十六进制表示就是
0xFFFFFFFF
二进制表示就是
11111111 11111111 11111111 11111111
能担得起success这种唯一、霸气、精美绝伦的响应码的,不仅仅是0!!-1完完全全配得起!!
而且,通常,0表示false,1表示true
现在回头想想:在那个互联网垦荒时代,当你千辛万苦调试了支付宝第一个功能,响应码直接将32个1,32个true甩在你脸上,真是爽到极点!!!
好吧。。。虽然说实话我也不知道为啥定义成-1,但编着编着,我有点心动了。。。
各位瞧瞧,怎么解?