
No.3ベストアンサー
- 回答日時:
> 高速なプログラムを書く必要の出たときのために型に
> よる処理速度を教えてください。
処理系に依存しますし、処理系のマニュアルにも記載されていない場合が多いので、自分でコンパイル結果を見ながら確認する必要があります。
組み込み用の処理系では、マニュアルにこの辺りの解説が書かれているものをよく見かけます。
一般的には、short型がint型より小さい場合は、何らかの演算の前には汎整数拡張によってint型に暗黙の型変換が起こりますので、その分だけ遅くなる場合があります。ただし、プロセッサのアーキテクチャによっては、こうしたオーバーヘッドが発生しないものも普通に存在します。
浮動小数点型の場合ですが、標準化以前のC言語では、float型はいったんdouble型に暗黙の型変換が行われてから演算していたのですが、標準Cではfloat型はfloat型のまま演算してもよいことになり、多くの処理系はそのようになっています。
また、可変個実引数や、関数原型のない関数の引数としてfloat型の値を渡した場合、既定の実引数拡張によってdouble型に暗黙の型変換が起こります。
いずれにしても、暗黙の型変換が発生し、それにコストがかかるような処理系では、クリティカルな処理では大きな影響が出ることが十分考えられます。

No.4
- 回答日時:
高速なプログラムを書くためには、アルゴリズムやデータ型を気にした方が遙かに有用だとは思いますが。
まず、int に対しては、「そのプロセッサで最も自然なデータの長さを int にする」傾向があります。このため、わざわざ型変換のはいる可能性のある、shot int よりも、速い場合が多いですね。
double に関しては、標準C言語では、浮動小数点データの基準は double だからというのがひとつあります。
たとえば、数学系の関数の返値や引数はすべて double です。また、小数点を含んだ定数( 0.1 とか)は、特に指定がない限り、double 型のデータです。(0.1f だと float 型の定数です)
よって、
float x = 0.1;
// x = (float)0.1; という暗黙の型変換
float y = sin(x);
// y = (float)(sin((double)x)) という暗黙の型変換
などとすると、そのたびに型変換が発生します。
この分のオーバーヘッドでしょう。
No.2
- 回答日時:
一口にshort、int、long、float、doubleといっても何バイトを割り当てるかは
それぞれの処理系(ハードとコンパイラー)の実態に合わせて決めることに成っています。
従って一概には言えません。
例えばintを標準的に扱うマシンで仮にshortを扱うとすれば前後に変換が入る分だけ
遅くなります。
どうしても気になるならそれぞれの実装(機種とコンパイラー)で
ベンチマークテストをやってみるしかありません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語で、繰り返し文の中で、0....
-
C 開放してるのにエラー(doubl...
-
^この記号を使わない
-
プログラムでの数字につく”f”の...
-
c言語の問題
-
2次方程式の解を求めるプログ...
-
c言語でDFTのプログラムを作成...
-
doubleの変数にintとintの割り...
-
至急です! マクロ定義で #defi...
-
C#イベント中の戻り値の設定の...
-
doubleは常に%lfとするべきなのか
-
最早開始時間と最遅完了時刻を...
-
Aの値からBの値を除するとは??
-
信頼区間の1.96や1.65ってどこ...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語 エラーの原因がわからな...
-
値差の%計算方法について
-
数字以外が入力されたらエラー...
-
「Aに対するBの割合」と「Aに対...
-
VB6.0での小数点の扱いについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C 開放してるのにエラー(doubl...
-
c言語で、繰り返し文の中で、0....
-
doubleの変数にintとintの割り...
-
至急です! マクロ定義で #defi...
-
C言語 関数プロトタイプ宣言の...
-
浮動小数点の定数
-
DWORDの警告
-
C言語の型による処理速度の違い
-
C言語で台形公式を使った二重積...
-
C言語を実行すると-infが出てき...
-
int とdoubleの比較
-
C言語初心者 構造体 課題について
-
たくさんの数の平均を求める方...
-
EXE1→DLL→EXE2数値を受け渡す方法
-
プログラミングでのテイラー展開
-
C++初心者です。簡単なスコア計...
-
【C言語】二階微分方程式をル...
-
fgets()による繰り返し入力(c言語)
-
2分法で方程式の複数の解を自...
おすすめ情報