在看zlog代码的时候,看到这两个宏定义
#define ZLOG_INT32_LEN sizeof("-2147483648") - 1
#define ZLOG_INT64_LEN sizeof("-9223372036854775808") - 1
感觉有些懵逼,获取int32位的长度不应该是sizeof(-2147483648)这样吗,为什么用字符串,后来想了一下,原来这个地方表示的不是int的位数,而是使用字符串来盛放32位和64位有符号数最大需要几个字符空间。
举个例子,上面的-2147483648一共是11个字符,算上符号。而sizeof在算长度的时候会计算最后的‘\0’,所以最后再减去1.