みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

stdint.hのint8_tとuint8_tについて

stdint.hのint8_tとuint8_tの
値のとりうる範囲は下記で合っていますでしょうか?

・int8_t
  -128~127

・uint8_t
  0~255

「int8_tは最上位ビットが符号ビットで使われ、
uint8_tは最上位から最下位ビットまで全てを、
値を表現するために使える。」
という考えです。

投稿日時 - 2008-03-08 10:52:15

QNo.3843438

暇なときに回答ください

質問者が選んだベストアンサー

正しいです。
int8_tはパディングビットが無く2の補数表現である8ビット幅の符号付き整数型のtypedefですから。
# ISO/IEC 9899:1999 7.18.1.1の第1段落


最小値,最大値は,マクロ
INT8_MIN, INT8_MAX, UINT8_MAX
というものがstdint.hのインクルードで定義されます。
# ISO/IEC 9899:1999 7.18.2.1

なので,limits.hのINT_MAXのようなマクロを使いたい場合,上記を使うことができます。
# 当然,INT16_MINやINT32_MAX,UINT64_MAXも,(対応する型があれば) 定義されます。

投稿日時 - 2008-03-08 13:38:58

お礼

ご回答ありがとうございます。

私の推測はあっているのですね

ところで
> # ISO/IEC 9899:1999 7.18.1.1の第1段落
とあるのは、ISOの資料内のものでしょうか?

ISOのサイト内で検索してみたところ、それっぽい
資料は見つかりましたが、有料コンテンツのようでした。
http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=29237

見てみたいのですが、購入しないと、見れないものですか?
購入されたのでしょうか?

投稿日時 - 2008-03-09 11:04:33

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

#2です。

> 見てみたいのですが、購入しないと、見れないものですか?
> 購入されたのでしょうか?

ISO/IEC 9899:1999というのは,標準Cの規格です。
この規格書は販売されているものなので,見るためには購入する必要があります。
ただ,まったく同等のINCITS/ISO/IEC 9899:1999がANSIのWebStoreにて$30で購入可能です。
http://webstore.ansi.org/FindStandards.aspx?SearchString=9899&SearchOption=0&PageNum=0
おそらく,購入可能なISO/IEC 9899 (または相当規格)の中で一番安いです (JISで買うと35185円)。
なお,同等の邦訳版JIS X 3010:2003は14280円です。

私はこちら (INCITS/ISO/IEC 9899:1999) を購入しています。
購入時期の関係でか,規格にINCITSの表示はありませんが。


なお,JIS X 3010:2003に関しては,日本工業標準調査会のサイト http://www.jisc.go.jp/ にて閲覧可能です。
ただし,閲覧専用な上,画像のみのPDFなので非常に使い勝手が悪かったりしますが。

投稿日時 - 2008-03-10 14:36:04

お礼

ご回答ありがとうございます。
参照URLを回ってみます。

投稿日時 - 2008-03-15 10:17:47

ANo.1

2進数8ビットで表現できる値としては合ってます。

あとは、対象としてる処理系でそのようにint8_t/uint8_tが定義されているかを実際に確認してください。

投稿日時 - 2008-03-08 11:33:12

補足

ご回答ありがとうございます。
質問があります。

> あとは、対象としてる処理系でそのようにint8_t/uint8_tが
> 定義されているかを実際に確認してください。
stdint.hの中を見て、どの型がint8_t/uint_8にtypedefされて
いるかを見ればよいのでしょうか?
(例えばtypedef signed char int8_t;
とあれば、質問内容の値の範囲と一致するような感じ)

投稿日時 - 2008-03-08 12:05:51

あなたにオススメの質問