LaTeX 计数器中可以保存的最大整数是多少?

LaTeX 计数器中可以保存的最大整数是多少?

我正在使用计数器来保存正整数,如下所示:

\setcounter{mycoutervalue}{59}

在这种情况下,我可以保存在计数器中的值是否有任何限制mycountervalue?确切的限制是多少?

谢谢!我不想出现意外溢出。

答案1

最大值是“通常”的2^31-1长整数值,以及从的负范围-2^31,因此整个范围都是2^32可能的整数。

2^31-1\ifnum是 2147483647,这是可用于计数器或代码的最大整数\numexpr

在下面的代码中,我将此数字存储到计数器中\mycounter,并在使用后多次打印它\stepcounter。第一次之后,\stepcounter寄存器溢出,数字设置为-2147483648,即可能的“最大”负数。随后的\stepcounter工作正常。

标准e-TeX将 256 个寄存器(计数、跳过等)的限制扩展到 32568 个可能的寄存器(每种类型)

\documentclass{article}

\newcounter{mycounter}

\begin{document}

\setcounter{mycounter}{2147483647}

\themycounter  % prints 2147483647 

\stepcounter{mycounter}  % Now the overflow will occur

\themycounter % prints -2147483648

\stepcounter{mycounter}

\themycounter % -2147483647
\end{document}

在此处输入图片描述

答案2

根据 TEXbook 的说法:

TEX 有 256 个寄存器称为\count0\count255每个寄存器可保存介于 -2147483647 和 +2147483647 之间的整数(含);即,数值应小于 2 31

相关内容