
No.2ベストアンサー
- 回答日時:
C言語規格書(JISX3010)の
6.4.4.1 整数定数
6.4.4.2 浮動小数点定数
に記述があります。
わかりやすいサイトも参考にリンクを載せます。
http://www9.plala.or.jp/sgwr-t/c/sec13.html
の「13-4.定数の修飾」
接尾辞を指定しない場合、整数定数の10進定数の場合
・int
・long int
・long long int
の順で、解釈されます。
単に 10 と記述すれば int の範囲内であるため int型の定数になります。
intの範囲外の値である場合、long intの範囲内であればlong int型の定数に、
long intの範囲外であれば、long long intの範囲内であればlong long int型で扱われます。
long long intの範囲外であればエラーがでるのかな。
ここで、たとえば
long int i = 0;
と記述すると、int型定数からlong int型に代入するため内部的にキャストが行われるんではないでしょうか?
だったら最初から
long int i = 0L;
としておいた方が効率がよさそうです。
また、関数の引数でlong intを欲しているときも同様です。
void hoge(long int i);
hoge(10); よりも hoge(10L);
(C++になると型に五月蠅くなるので、接尾辞をつけないとエラーになるケースもある。)
この回答へのお礼
お礼日時:2009/07/31 11:02
なるほど!あらかじめ代入される変数と代入する定数の型を合わせておけば処理が早くなるんですね。
サフィックスの有り無しで代入の速度がどう変わるか実験してみたのですが(unsigned longの変数に10と10ULを代入した際の速度の差)、結果はどちらも変わりませんでした。最近のコンパイラは最適化がんばってくれてるんですね。ということは、最近のコンパイラではサフィックスの意味はあまりないかも・・・?
意味がわかってすっきりしました。回答ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のサフィックスについて
-
VBAで入力数値について
-
エクセルVBAでテキストボッ...
-
C#のループでtextboxに値を入れ...
-
チェックボックスを操作できな...
-
VBA public変数はどのようなこ...
-
レコードセットにnullの場合
-
Matlab/SimulinkのChirp信号に...
-
ExcelのVBAで文章にある複数の...
-
検索結果の指定列をリストボッ...
-
Vba 電卓のテキストボックスに...
-
VB.NETでのイベントの途中終了
-
パーソナルXLSBのfuctionを呼び...
-
【VB.NET】テキストボックスに...
-
Callで呼び出したプロシージャ...
-
Why is 77+33 not equal to 100?
-
Functionの戻り値を配列にした...
-
TextBoxの内容を右寄せ
-
音が鳴らないようにしたい
-
subsequentとnextの違いってな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のサフィックスについて
-
「ずっと憧れていました」は英...
-
#define hoge long longって正...
-
C++のActiveX DLLでポインタを...
-
初期化関数でmallocしたい
-
エクセルVBAでテキストボッ...
-
他のフォームから別のフォーム...
-
VBA public変数はどのようなこ...
-
C#のループでtextboxに値を入れ...
-
アクセスできない保護レベルエ...
-
ユーザーフォームへのデータ入...
-
VB.NETでのイベントの途中終了
-
【VB.NET】テキストボックスに...
-
二点の座標から距離や角度を求...
-
チェックボックスを操作できな...
-
【VB6.0】 あるフォームから他...
-
VBAで入力数値について
-
テキストボックスかラベル上の...
-
VBAでcallで呼び出したsubを終...
-
レコードセットにnullの場合
おすすめ情報