在阅读nginx源代码时,我找到了这一行:
#define NGX_INT32_LEN sizeof("-2147483648") - 1
为什么使用sizeof(“ - 2147483648”) - 1?
not sizeof(-2147483648) - 1
不是-2147483648 - 1
不是-2147483649 或者?
有什么区别?
答案 0 :(得分:12)
基本上,-2147483648是最宽,就其表示所需的字符而言,是任何带符号的32位整数。这个宏NGX_INT32_LEN
定义了这样一个整数可以有多少个字符。
它通过将该字符串所需的空间量保持为常量并减去1(因为sizeof
将为尾随NUL字符提供空间)来实现此目的。它比使用更快:
strlen("-2147483648")
因为并非所有编译器都会将其转换为常量11
。