short int なんてものがあるのか! (`・ω・´)intより2バイト少ないしメモリの節約になるぞ!どんどん使っていこう!
↓
調べる
↓
えっ・・・使わないほうがいいの・・・? (´ ・ω・ `)
short int なんてものがあるのか!→
Re: short int なんてものがあるのか!→
構造体とかテーブルとか、サイズが重要なときは価値があると思います。
その場合でも、shortだとサイズが定まらないので、int16_tとか使ったほうが良いです。
計算中はintに格上げされるので、一時変数とかだと余分なコストが付くだけです。
その場合でも、shortだとサイズが定まらないので、int16_tとか使ったほうが良いです。
計算中はintに格上げされるので、一時変数とかだと余分なコストが付くだけです。
Re: short int なんてものがあるのか!→
コメント有難う御座います。
サイズが重要なとき、ですか・・・・・・まだそのレベルのプログラミングは行ったことが無いので、今は大人しくintを使ってみます。
また、int16_tの意味がイマイチ分からず調べたり聞いたりしたのですが、「オプティマイゼーションでshortとint16_tの差異は解消される」程度しか分かりませんでした。
>計算中はintに格上げされるので、一時変数とかだと余分なコストが付くだけです。
short intは計算されるとき、intと同じ扱いになるんですか。確かにfor分の初期化の式でshort intってやったら不自然ですよね。そして処理も軽くはならない。ひとつ賢くなった気がします。
サイズが重要なとき、ですか・・・・・・まだそのレベルのプログラミングは行ったことが無いので、今は大人しくintを使ってみます。
また、int16_tの意味がイマイチ分からず調べたり聞いたりしたのですが、「オプティマイゼーションでshortとint16_tの差異は解消される」程度しか分かりませんでした。
>計算中はintに格上げされるので、一時変数とかだと余分なコストが付くだけです。
short intは計算されるとき、intと同じ扱いになるんですか。確かにfor分の初期化の式でshort intってやったら不自然ですよね。そして処理も軽くはならない。ひとつ賢くなった気がします。
Re: short int なんてものがあるのか!→
int16_tというのは、C99から標準のstdint.hで定義されている型名です。
言語規格上はshortが必ずしも16ビットとは限らないので、どんな環境でも16ビット整数の型を割り当てた別名としてint16_tを用意して環境依存を防ぐわけです。
ウィンドウズAPIで型名をわざわざ大文字で定義し直しているのも同じ考え方です。
言語規格上はshortが必ずしも16ビットとは限らないので、どんな環境でも16ビット整数の型を割り当てた別名としてint16_tを用意して環境依存を防ぐわけです。
ウィンドウズAPIで型名をわざわざ大文字で定義し直しているのも同じ考え方です。
Re: short int なんてものがあるのか!→
有難うございます・・・調べましたが、このような解釈に至りました。
short int型は32ビット環境では16ビットあるが、64ビット環境だと32ビットになる。環境が変わることによってshort int型の大きさが変わるのを防ぐため、stdint.hをインクルードしてint16_t型(厳密にその幅を持つ整数型)を用いる。
short int型は32ビット環境では16ビットあるが、64ビット環境だと32ビットになる。環境が変わることによってshort int型の大きさが変わるのを防ぐため、stdint.hをインクルードしてint16_t型(厳密にその幅を持つ整数型)を用いる。
Re: short int なんてものがあるのか!→
概ねそういうことですね。
コードを見たときint16_tとかを使っていればビット数が重要だという意思表示と取れますし。
ただ一般的なPC環境でshort int型は64ビット環境でも16ビットですけどね。
コードを見たときint16_tとかを使っていればビット数が重要だという意思表示と取れますし。
ただ一般的なPC環境でshort int型は64ビット環境でも16ビットですけどね。
Re: short int なんてものがあるのか!→
32bitPCと64bitPCの違いを調べてました・・・最大メモリ容量の違いなんですね;
どうやら勘違いしていたようです
どうやら勘違いしていたようです
Re: short int なんてものがあるのか!→
ポインタのサイズが違いますよ。クラバック さんが書きました:32bitPCと64bitPCの違いを調べてました・・・最大メモリ容量の違いなんですね;
そのままビット数が反映されてます。
整数型に関して、Visual C++はマイクロソフト製品なのでなるべく後方互換が重視されてます。
32ビット環境でも64ビット環境でもintは32ビット、long intは32ビット、long long intが64ビットです。
ウィンドウズ用のgccもそこらへんは同じです。
ところがLinuxだと様子が違って、32ビット環境は同じですが、
64ビット環境ではlong intが64ビットです。