char,short,int型などの整数型やflort型の浮動小数点がたなどのバイトや入れられる範囲ってどうやって決めているのですか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
どうやって決めているかと言えば、まずはISO/IECの委員会(C言語担当)で議論して制約事項を決めています。http://www.open-std.org/jtc1/sc22/wg14/
そのうえで、各コンパイラ開発者がCの規格が許す範囲で各データ型のビット長を決めます。なので、同じCPU用なのに違うコンパイラだとビット長が違うということもあり得ます。
最初はCの開発者であるカーニハンとリッチーが二人で決めたと考えられます。Cのデータ型はCPUにあわせて決められました。アセンブラ代わりの言語ですから。それと言語としてかなり発展した後で国際標準化されたという経緯があります。
アキュムレータ長など、たとえば「32ビットCPU」なら32bit整数がそのCPUに取っての基本の大きさでこれを wordといったりします。これに対してlongword,shortwordの演算命令も用意されることが多いのです。これをCではint, long int, short intとしました。32ビットCPU時代だとそれぞれ 32,32,16ビットにすることが多かったですね。スパーコンピュータCray1だと、long=int=short=128bit,char=8bitだったと記憶しています。
それとCPUは文字処理も要求されるので文字データも処理できますがこれを「バイト」とよび、Cではcharとしています。現代人はchar=8ビットと考えておいてかまいません。歴史的にはin=36bit、char=7bitなんていうCもありました(36bit CPU用)。
その後、Cの言語規格の国際標準化が行われて、今のCのような各データ型ごとのビット長の規定などができました。現long long int long やlong double floatなどのデータ型はあとで追加されたものです。
日本語の情報としてはここ http://www.jisc.go.jp/app/jis/general/GnrJISSearch.html で「X3010」を検索したらC言語のJIS規格(1999年版)を見ることが出来ます。2011年版の規格は英語版しかないように思います。
投稿2017/12/04 00:10
総合スコア702
0
charについてはC規格書で1byteと規定されている。それ以外は処理系がハードウェアなどと相談して決めている。
なお殆どの処理系でfloat
, double
などの浮動小数点型はIEE754の規定に従う。
投稿2017/12/03 15:30
編集2017/12/03 15:32総合スコア5850
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。