Author:ys2310
2008年春にNew York Cityにあるふる〜い大学を卒業。
Two header files <float.h> and <limits.h> define several implementation specific limits.
Table 9.1 gives the names declared, the allowable values, and a comment on what they mean. For example, the description of SHRT_MIN shows that in a given implementation the value must be less than or equal to −32767: this means that for maximum portability a program cannot rely on short variables being able to hold values more negative than −32767. Implementations may choose to support values which are more negative but must provide support for at least −32767.
| Name | Allowable value | Comment |
|---|---|---|
CHAR_BIT | (≥8) | bits in a char |
CHAR_MAX | see note | max value of a char |
CHAR_MIN | see note | min value of a char |
INT_MAX | (≥+32767) | max value of an int |
INT_MIN | (≤−32767) | min value of an int |
LONG_MAX | (≥+2147483647) | max value of a long |
LONG_MIN | (≤−2147483647) | min value of a long |
MB_LEN_MAX | (≥1) | max number of bytes in a multibyte character |
SCHAR_MAX | (≥+127) | max value of a signed char |
SCHAR_MIN | (≤−127) | min value of a signed char |
SHRT_MAX | (≥+32767) | max value of a short |
SHRT_MIN | (≤−32767) | min value of a short |
UCHAR MAX | (≥255U) | max value of an unsigned char |
UINT_MAX | (≥65535U) | max value of an unsigned int |
ULONG_MAX | (≥4294967295U) | max value of an unsigned long |
USHRT_MAX | (≥65535U) | max value of an unsigned short |
Note: if the implementation treats chars as signed, then the values of CHAR_MAX and CHAR_MIN are the same as the equivalent SCHAR versions. If not, then the value of CHAR_MIN is zero and the value of CHAR_MAX is equal to the value of UCHAR_MAX. | ||
<limits.h>For floating point numbers, the file <float.h> contains a similar set of minimum values. (It is assumed that where no minimum value is specified, there is either no minimum, or the value depends on another value.)
| Name | Allowable value | Comment |
|---|---|---|
FLT_RADIX | (≥2) | the radix of exponent representation |
DBL_DIG | (≥10) | the number of digits of precision in a double |
DBL_EPSILON | (≤1E−9) | minimum positive number such that 1.0 + x ≠ 1.0 |
DBL_MANT_DIG | (—) | the number of base FLT_RADIX digits in the mantissa part of a double |
DBL_MAX | (≥1E+37) | max value of a double |
DBL_MAX_10_EXP | (≥+37) | max value of exponent (base 10) of a double |
DBL_MAX_EXP | (—) | max value of exponent (base FLT_RADIX)) of a double |
DBL_MIN | (≤1E−37) | min value of a double |
DBL_MIN_10_EXP | (≤37) | minimum value of exponent (base 10) of a double |
DBL_MIN_EXP | (—) | min value of exponent part of a double (base FLT_RADIX) |
FLT_DIG | (≥6) | the number of digits of precision in a float |
FLT_EPSILON | (≤1E−5) | minimum positive number such that 1.0 + x ≠ 1.0 |
FLT_MANT_DIG | (—) | the number of base FLT_RADIX digits in the mantissa of a float |
FLT_MAX | (≥1E+37) | max value of a float |
FLT_MAX_10_EXP | (≥+37) | max value (base 10) of exponent part of a float |
FLT_MAX_EXP | (—) | max value (base FLT_RADIX) of exponent part of a float |
FLT_MIN | (≤1E−37) | min value of a float |
FLT_MIN_10_EXP | (≤−37) | min value (base 10) of exponent part of a float |
FLT_MIN_EXP | (—) | min value (base FLT_RADIX) of exponent part of a float |
FLT_ROUNDS | (0) | affects rounding of floating point addition:
any other value is implementation defined. |
LDBL_DIG | (≥10) | the number of digits of precision in a long double |
LDBL_EPSILON | (≤1E−9) | minimum positive number such that 1.0 + x ≠= 1.0 |
LDBL_MANT_DIG | (—) | the number of base FLT_RADIX digits in the mantissa part of a long double |
LDBL_MAX | (≥1E+37) | max value of a long double |
LDBL_MAX_10_EXP | (≥+37) | max value of exponent (base 10) of a long double |
LDBL_MAX_EXP | (—) | max value of exponent (base FLT_RADIX) of a long double |
LDBL_MIN | (≤1E−37) | minimum value of a long double |
LDBL_MIN_10_EXP | (≤−37) | min value of exponent part (base 10) of a long double |
LDBL_MIN_EXP | (—) | min value of exponent part of a long double (base FLT_RADIX) |
<float.h>
#include <limits.h>
次の記号は、 <limits.h> で定義されています。 これらは、このマニュアルの説明文中で使用されているものです。 HP-UX 値 欄は、すべての HP-UX システムで移植性のあるアプリケーションを 作成するために想定すべき値を示しています。
値の後の記号は、次に示す意味を持っています。
| + | いくつかの HP-UX システムでは、ここで示される値よりも実際の限界値が大きいことがあります。 | |
| - | いくつかの HP-UX システムでは、ここで示される値よりも実際の限界値が小さいことがあります。 | |
| = | 実際の限界値は、ここで示される値と常に等しく、すべての HP-UX システムで同じです。 | |
| * | この限界値の名前が定義されるのは、 コンパイル時に -D_XPG2 フラグを指定するか、ソースプログラムで <limits.h> がインクルードされる前に #define 指令のどちらか一方を用いることによって、 プリプロセッサマクロ _XPG2 が定義されているとき だけ です。 | |
| # | この限界値の定義値は、コンパイル時定数でないことがあります。 常にこの定義値は、実行時に整数式として計算されます。 |
これらの限界値の中には、システム構成によって違うものがあります。 その値は、 sysconf(2) を使って動的にに知ることができます。 また、ファイルシステムや、特殊ファイルに対応するデバイスに よって違うものがあります。 その値は pathconf(2) を使って知ることができます。 さらに、時代遅れのものもあります。 他の限界値に対して冗長であったり、移植可能なアプリケーションを 作成するのに役立ちません。 これらは、他のシステムからのアプリケーションの移植や、『 X/Open Portability Guide, Issue 2 』に従うアプリケーションをサポートしたり、以前の HP-UX の旧製品との互換性を保つために提供されています。 新しいアプリケーションでは _XPG2 フラグを定義しないでください。
コンパイルの際に <limits.h> ファイルをインクルードして、 そのアプリケーションが、ある特定のシステムで動作できるかどうかを 調べるための適当な限界値を検査することができます。 さらに、そのシステムに適合するようにアプリケーションの挙動を変えて、 様々な範囲にわたる限界値の設定やシステムの移植性を向上することもできます。
\".na
| 定数 | 説明 | HP-UX 値 | ARG_MAX |
|---|---|---|---|
| 環境データを含む、 exec(2)への引き数の最大長 (バイト単位) | 5120 +* | ||
| CHAR_BIT | char のビット数 | 8 = | |
| CHAR_MAX | char の最大整数値 | 127 = | |
| CHAR_MIN | char の最小整数値 | -128 = | |
| CHILD_MAX | ユーザー ID あたりの並行プロセス の最大個数 | 25 +-* | |
| CLK_TCK | 1 秒間あたりのクロックチック数 | 50 +# | |
| DBL_DIG | double の精度の桁数 | 15 + | |
| DBL_MAX | double の最大正数値 | 1.7976931348623157e+308 + | |
| DBL_MIN | double の最小正数値 | 4.94065645841246544e-324 - | |
| FCHR_MAX | ファイルの最大オフセット (バイト単位) | INT_MAX +-* | |
| FLT_DIG | float の精度の桁数 | 6 + | |
| FLT_MAX | float の最大正数値 | 3.40282346638528860e+38 + | |
| FLT_MIN | float の最小正数値 | 1.40129846432481707e-45 - | |
| INT_MAX | int の最大 10 進値 | 2147483647 + | |
| INT_MIN | int の最小 10 進値 | -2147483648 - | |
| LINE_MAX | 1 行あたりの最大文字数 | 2048 = | |
| LINK_MAX | 1 ファイルあたりの最大リンク数 | 32767 +* | |
| LOCK_MAX | システムロック テーブルの最大エントリー数 | 32 +-* | |
| LONG_BIT | long のビット数 | 32 + | |
| LONG_MAX | long の最大 10 進値 | 2147483647 + | |
| LONG_MIN | long の最小 10 進値 | -2147483648 - | |
| MAX_CANON | ターミナル基準入力行に含まれる最大バイト数 | 512 +* | |
| MAX_CHAR | ターミナル入力キューに含まれる最大バイト数 | MAX_INPUT =* | |
| MAX_INPUT | ターミナル入力キューに含まれる最大バイト数 | 512 +* | |
| NAME_MAX | 1 つのパス名構成要素の最大バイト数 | 14 +* | |
| NL_ARGMAX | NLS printf(3S) 関数および scanf(3S)関数の呼出しの際の最大「桁」数 | 9 = | |
| NL_MSGMAX | 1 つの NLS メッセージカタログに含まれる 最大メッセージ数 | 32767 + | |
| NL_SETMAX | 1 つの NLS メッセージカタログに含まれる 最大セット数 | 255 + | |
| NL_TEXTMAX | 1 つの NLS メッセージ文字列に含まれる 最大バイト数 | 8192 + | |
| NGROUPS_MAX | プロセスあたりの最大補助グループ数 | 20 + | |
| OPEN_MAX | 1 つのプロセスがオープンできる最大ファイル数 | 60 +* | |
| PASS_MAX | 1 つのパスワードに含まれる最大文字数 | 8 + | |
| PATH_MAX | null ターミネータを除く、 1 つのパス名に含まれる最大文字数 | 1023 +* | |
| PID_MAX | 1 つのプロセス ID の最大値 | 30000 + | |
| PIPE_BUF | 1 つのパイプへの書込み単位の最大バイト数 | 8192 +* | |
| PIPE_MAX | 1 回の書込みで 1 つのパイプに書き込める最大バイト数 | INT_MAX + | |
| PROC_MAX | システムの最大並行プロセス数 | 84 +-* | |
| SCHAR_MAX | signed char の最大整数値 | 127 = | |
| SCHAR_MIN | signed char の最小整数値 | -128 = | |
| SHRT_MAX | short の最大 10 進値 | 32767 + | |
| SHRT_MIN | short の最小 10 進値 | -32768 - | |
| STD_BLK | 物理的 I/O ブロックに含まれるバイト数 | 512 + | |
| SYSPID_MAX | システムプロセスの最大プロセス ID | 4 +-* | |
| SYS_NMLN | uname(2) が返す文字列の長さ | 8 +* | |
| SYS_OPEN | システムでオープンされるファイルの最大個数 | 120 +-* | |
| TMP_MAX | tmpnam(3S) が生成するユニークな名前の 最大個数 | 17576 + | |
| UCHAR_MAX | unsigned char の最大整数値 | 255 = | |
| UID_MAX | ユーザー ID やグループ ID として 使用できない値の最小値 | 2147483647 + | |
| UINT_MAX | unsigned int の最大 10 進値 | 4294967295 + | |
| ULONG_MAX | unsigned long の最大 10 進値 | 4294967295 + | |
| USHRT_MAX | unsigned short の最大 10 進値 | 65535 + | |
| USI_MAX | unsigned int の最大 10 進値 | UINT_MAX =* | |
| WORD_BIT | 1 つの「ワード」 (int) 中のビット数 | 32 + |