「C言語/データ型と変数の高度な話題」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎固定幅の整数型: https://en.wikipedia.org/w/index.php?title=C_data_types&oldid=1036349659 から Fixed-width integer type 節を抄訳
タグ: 2017年版ソースエディター
398 行
}}
 
=== struct固定幅の整数型 ===
C99では、プログラムの移植性を高めるために、いくつかの新しい整数型が定義されています<ref name=c99>{{cite book | url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf | title=ISO/IEC 9899:1999 specification, TC3 | at=p. 255, § 7.18 ''Integer types <stdint.h>''}}</ref>。
{{See also|C言語/構造体・共用体}}
すでに利用可能な基本的な整数型では、実際のサイズが実装によって定義され。システムによって異なる可能性があるため、(移植性を確保する上で)不十分であると考えられました。
新しい型は、ハードウェアが通常いくつかの型しかサポートしておらず、そのサポートが環境によって異なる組み込み環境において特に有用です。すべての新しい型は、<code><inttypes.h></code> ヘッダー(及び、<code><stdint.h></code> ヘッダー)で定義されています。
型は、以下のカテゴリーに分類されます。
 
; 正確な幅の整数型: すべての実装で同じビット数 ''n'' を持つことが保証されている整数型(実装で利用可能な場合にのみ含まれます)。
; 最小幅の整数型: 少なくとも指定されたビット数 ''n'' を持つ、実装で利用可能な最小の型であることが保証されています。少なくとも N=8,16,32,64 で指定されていることが保証されます。
; 最速の整数型: 少なくとも指定されたビット数 ''n'' を持つ,実装で利用可能な最速の整数型であることが保証されています。少なくとも N=8,16,32,64 で指定されていることが保証されます。
; ポインタ整数型: ポインタ保持できることが保証されている整数型(実装で利用可能な場合にのみ含まれます)。
; 最大幅の整数型: 実装上最大の整数型であることが保証されている整数型。
 
以下の表は、型と実装の詳細を取得するためのインターフェースをまとめたものです(''n''はビット数を意味します)。
 
{| class=wikitable
|+ 型と実装の詳細を取得するためのインターフェース
|-
! rowspan=2 scope="col" | 型カテゴリ
! colspan=3 scope="col" | 符号付き型
! colspan=3 scope="col" | 符号なし型
|-
! scope="col" | 型
! scope="col" | 最小値
! scope="col" | 最大値
! scope="col" | 型
! scope="col" | 最小値
! scope="col" | 最大値
|-
! scope="row" | 正確な幅
| <code>int''n''_t</code> || <code>INT''n''_MIN</code> || <code>INT''n''_MAX</code>
| <code>uint''n''_t</code> || 0 || <code>UINT''n''_MAX</code>
|-
! scope="row" | 最小幅
| <code>int_least''n''_t</code> || <code>INT_LEAST''n''_MIN</code> || <code>INT_LEAST''n''_MAX</code>
| <code>UINT_LEAST''N''_T</code> || 0 || <code>UINT_LEAST''N''_MAX</code>
|-
! scope="row" | 最速
| <code>int_fast''n''_t</code> || <code>INT_FAST''n''_MIN</code> || <code>INT_FAST''n''_MAX</code>
| <code>UINT_FAST''n''_T</code> || 0 || <code>UINT_FAST''n''_MAX</code>
|-
! scope="row" | ポインタ
| <code>intptr_t・ || <code>INTPTR_MIN</code> || <code>INTPTR_MAX</コード
| | <code>UINTPTR_T</code> || 0 || <code>UINTPTR_MAX</code>
|-
! scope="row" | 最大幅
| <code>intmax_t</code> || <code>INTMAX_MIN</code> || <code>INTMAX_MAX</コード
|| <code>UINTMAX_T</code> || 0 || <code>UINTMAX_MAX</code>
|}
 
=== union ===