short int なんてものがあるのか!→

アバター
クラバック
記事: 26
登録日時: 14年前
住所: 関東

short int なんてものがあるのか!→

投稿記事 by クラバック » 14年前

short int なんてものがあるのか! (`・ω・´)intより2バイト少ないしメモリの節約になるぞ!どんどん使っていこう!

調べる

えっ・・・使わないほうがいいの・・・? (´ ・ω・ `)

ISLe
記事: 2650
登録日時: 15年前

Re: short int なんてものがあるのか!→

投稿記事 by ISLe » 14年前

構造体とかテーブルとか、サイズが重要なときは価値があると思います。
その場合でも、shortだとサイズが定まらないので、int16_tとか使ったほうが良いです。

計算中はintに格上げされるので、一時変数とかだと余分なコストが付くだけです。

アバター
クラバック
記事: 26
登録日時: 14年前
住所: 関東

Re: short int なんてものがあるのか!→

投稿記事 by クラバック » 14年前

コメント有難う御座います。
サイズが重要なとき、ですか・・・・・・まだそのレベルのプログラミングは行ったことが無いので、今は大人しくintを使ってみます。
また、int16_tの意味がイマイチ分からず調べたり聞いたりしたのですが、「オプティマイゼーションでshortとint16_tの差異は解消される」程度しか分かりませんでした。

>計算中はintに格上げされるので、一時変数とかだと余分なコストが付くだけです。
short intは計算されるとき、intと同じ扱いになるんですか。確かにfor分の初期化の式でshort intってやったら不自然ですよね。そして処理も軽くはならない。ひとつ賢くなった気がします。

ISLe
記事: 2650
登録日時: 15年前

Re: short int なんてものがあるのか!→

投稿記事 by ISLe » 14年前

int16_tというのは、C99から標準のstdint.hで定義されている型名です。
言語規格上はshortが必ずしも16ビットとは限らないので、どんな環境でも16ビット整数の型を割り当てた別名としてint16_tを用意して環境依存を防ぐわけです。
ウィンドウズAPIで型名をわざわざ大文字で定義し直しているのも同じ考え方です。

アバター
クラバック
記事: 26
登録日時: 14年前
住所: 関東

Re: short int なんてものがあるのか!→

投稿記事 by クラバック » 14年前

有難うございます・・・調べましたが、このような解釈に至りました。
short int型は32ビット環境では16ビットあるが、64ビット環境だと32ビットになる。環境が変わることによってshort int型の大きさが変わるのを防ぐため、stdint.hをインクルードしてint16_t型(厳密にその幅を持つ整数型)を用いる。

ISLe
記事: 2650
登録日時: 15年前

Re: short int なんてものがあるのか!→

投稿記事 by ISLe » 14年前

概ねそういうことですね。
コードを見たときint16_tとかを使っていればビット数が重要だという意思表示と取れますし。

ただ一般的なPC環境でshort int型は64ビット環境でも16ビットですけどね。

アバター
クラバック
記事: 26
登録日時: 14年前
住所: 関東

Re: short int なんてものがあるのか!→

投稿記事 by クラバック » 14年前

32bitPCと64bitPCの違いを調べてました・・・最大メモリ容量の違いなんですね;
どうやら勘違いしていたようです

ISLe
記事: 2650
登録日時: 15年前

Re: short int なんてものがあるのか!→

投稿記事 by ISLe » 14年前

クラバック さんが書きました:32bitPCと64bitPCの違いを調べてました・・・最大メモリ容量の違いなんですね;
ポインタのサイズが違いますよ。
そのままビット数が反映されてます。

整数型に関して、Visual C++はマイクロソフト製品なのでなるべく後方互換が重視されてます。
32ビット環境でも64ビット環境でもintは32ビット、long intは32ビット、long long intが64ビットです。
ウィンドウズ用のgccもそこらへんは同じです。

ところがLinuxだと様子が違って、32ビット環境は同じですが、
64ビット環境ではlong intが64ビットです。