当前位置: 代码迷 >> 综合 >> sizeof(-2147483648) - 1和sizeof(-9223372036854775808) -1
  详细解决方案

sizeof(-2147483648) - 1和sizeof(-9223372036854775808) -1

热度:85   发布时间:2023-12-08 16:04:41.0

在看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.