No.2ベストアンサー
- 回答日時:
整数リテラルの型は、その値を表現できるint以上の最も小さい型になります。
また、データの損失が起きないより大きな型への変換は暗黙に行われます。というわけでリテラルを変数に代入する(初期化含む)だけなら必要ありません。
しかし演算をする場合には事情が変わります。
int未満の整数同士の演算は自動的にint型に拡張してから行われますが、結果がどうなろうとintより大きくはなりません。
intとlongが同じ幅の処理系だと違いがわかりませんので、longの代わりにlong longを使ってみましょう
注:INT_MAXは符号付きint型の最大値(<limits.h>に定義がある)
#include <stdio.h>
#include <limits.h>
int main(void) {
long long a, b;
int m = INT_MAX;
a = m + 10;
b = m + 10LL;
printf("a=%lld\nb=%lld\n", a, b);
return 0;
}
aはオーバーフローにより結果がマイナスになります。
一方bはオーバーフローを起こさず、正常な結果が出ます。
これは、aでは演算を行う時点では単にint型を使用している為です。
一方、bでは計算時に10というリテラルがlong long型を指定されているので、演算がlong long型に拡張して行われます。
10LL
は
(long long)10
としてもいいですが、前者の方がずっとすっきりと書けます。
No.3
- 回答日時:
代入なら、特に意味はないでしょう。
型を明確にすると言う人もいるのでしょうが、Cで扱う型は標準型だけじゃなくて、システムで定義された型やユーザが定義した型もあります。
time_t x = 0;
size_t y = 0;
my_type z = 0;
とかのときに、Lを付けた方がいいのやら良くないのやら。
代入じゃなくて、演算のオペランドや関数引数の場合については#2の方のお書きの通り。
いずれにせよ小文字のエルは数字の1と見間違うと困るので、付けるなら大文字にしましょう。
No.1
- 回答日時:
C/C++は強く型付けされた言語です。
常に型を意識する必要があります。
>なぜLを付けるのでしょうか?
即値の型が(int)でなくlongであることを明示するためです。
32ビット処理系だとintもlongも大きさは全く同じなので、
有難味がわからないかも知れません。
しかし、64ビット処理系の中には
intは32ビット、longは64ビットというように
サイズが異なるものもあります。
また、16ビットの場合もintは16ビット、
longは32ビットというものがありました。
この場合、longの即値にLを付加することで、
intの変数への代入をコンパイラにチェックしてもらい、
バグの低減につながります。
C++の場合には、別の面があります。
C++では関数の多重定義が可能です。
void f(int n)と
void f(long n)
を別の関数として扱わせることができます。
この場合
f(10)ではintバージョンが呼ばれます。
longバージョンを呼びたいときは
f(10L)と書く必要があります。
バグの低減なんですね。
まだ簡単なプログラムしか組めないませんが、大きいプログラムを組むようになるとそういうのが重要になってくるのでしょうか。
分かりました。回答ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) Excel 条件付き書式について 1 2022/12/14 20:38
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Excel(エクセル) EXCEL値貼り付け(ある条件のもと自動化) 5 2023/06/06 12:21
- 経済学 ミクロ経済の問題 準線形効用関数 4 2022/08/14 00:58
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
とっておきの「まかない飯」を教えて下さい!
飲食店で働く方だけが食べられる、とっておきの「まかない飯」。 働いてらっしゃる方がSNSなどにアップしているのを見ると、表のメニューには出てこない秘密感もあって、「食べたい!!」と毎回思ってしまいます。
-
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
C言語のサフィックスについて
C言語・C++・C#
-
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
-
4
複数の変数を宣言する時、同時に初期化?できないでしょうか?
Java
-
5
画面を強制的に再描画させる方法
C言語・C++・C#
-
6
Run-Time Check Failure #3というエラーが出ます。
C言語・C++・C#
-
7
型変換
C言語・C++・C#
-
8
C言語での引数の省略方法
C言語・C++・C#
-
9
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
10
文字列から空白を取り除きたいのですが
C言語・C++・C#
-
11
2重定義って??
C言語・C++・C#
-
12
return 1L
C言語・C++・C#
-
13
プログラムでの数字につく”f”の意味
C言語・C++・C#
-
14
既定のコンストラクタがありません。というエラーについて
C言語・C++・C#
-
15
#if 1 #elseの意味について
C言語・C++・C#
-
16
#defineの定数を文字列として読み込む
C言語・C++・C#
-
17
エディットボックスの入力制限について
C言語・C++・C#
-
18
バッファとは何ですか
C言語・C++・C#
-
19
FETCHエラー(オラクル)
その他(データベース)
-
20
float?数字の後にLがつくもの
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
2重定義って??
-
visualstudio C# テキストボッ...
-
long型の定数の末尾にLを付ける...
-
関数の実体定義にヘッダファイ...
-
C++ クラスをメンバにもつクラ...
-
C++のfor文について
-
構造体を引数とする、クラス間...
-
C++のコンストラクタを宣言する...
-
inline
-
値を返り値に返すのと参照渡し...
-
C++でboolにintの値を代入する...
-
クラスのメンバ関数を別ファイ...
-
変数の型を定義しなかった場合...
-
64bit → 32bit型へのキャスト
-
waveout関数を使うと「○○は一度...
-
引数で argc argvが使用され...
-
スレッドのスケジューリングポ...
-
main.c:7:43: warning: implici...
-
LNK2019: 未解決の外部シンボル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
C++のfor文について
-
2重定義って??
-
visualstudio C# テキストボッ...
-
long型の定数の末尾にLを付ける...
-
typedef enumの使い方を教えて...
-
C++でboolにintの値を代入する...
-
プログラムの中で別のmainを呼...
-
構造体の要素すべてに対する四...
-
変数の型を定義しなかった場合...
-
intとINTの違いは?
-
main.c:7:43: warning: implici...
-
【#define】 defineで定義した...
-
構造体の宣言でエラーが出ます。
-
関数の実体定義にヘッダファイ...
-
ハンドルされていない例外が発...
-
void func( void )について
-
エラー「invalid conversion fr...
-
sshdログの意味
-
C言語での方向キー入力判定
おすすめ情報