C++を勉強していると、関数の戻り値の書き方や、intとsize_tのどちらを使うべきかで迷う場面がよくあります。特に初心者のうちは「動けばOKなのか」「より良い書き方があるのか」が気になりやすいポイントです。この記事では、距離計算のようなシンプルな関数を例に、return文の考え方やsize_tの使いどころについて整理して解説します。
return文は直接返す書き方でも問題ない
例えば距離を返す関数がある場合、次の2つの書き方があります。
int dis(){
m_dis = m_hour * m_speed;
return m_dis;
}
int dis(){
return m_hour * m_speed;
}
どちらも動作としてはほぼ同じです。
ただし、単純に計算結果を返すだけなら、後者のように直接returnする書き方のほうがシンプルで読みやすい場合が多いです。
「一時的な変数を作る必要がないなら、そのまま返す」という考え方はC++ではよく使われます。
変数を使ったほうが良いケースもある
一方で、途中変数を使う書き方が悪いわけではありません。
例えば以下のようなケースでは、変数を経由したほうが読みやすくなることがあります。
- デバッグ時に値を確認したい
- 途中で別の処理を追加する予定がある
- 計算式が長く複雑
- 意味のある名前を付けたい
int dis(){
int distance = m_hour * m_speed;
return distance;
}
このように書くと、「何を表す値なのか」がわかりやすくなります。
初心者は「読みやすさ」を重視すると理解しやすい
C++では短く書くことより、「後で読んで理解しやすいか」がかなり重要です。
例えば初心者のうちは、多少長くても意味のわかる変数名を使ったほうが学習しやすい場合があります。
逆に、単純な1行計算を毎回変数に入れると、少し冗長になることもあります。
つまり重要なのは「状況に応じて使い分けること」です。
size_tとは何か?
size_tは、主に「サイズ」や「個数」を扱うための型です。
例えば以下のような場面で使われます。
- 配列の要素数
- vectorのサイズ
- メモリサイズ
- 添字
std::vector<int> v;
size_t n = v.size();
size_tは符号なし整数型(unsigned)なので、負の値を持てません。
距離計算でsize_tを使うべき?
今回のような距離計算では、「絶対に負にならない」と決まっているならsize_tを使う考え方もあります。
ただし、初心者段階では無理にsize_tへ統一しなくても問題ないケースが多いです。
なぜなら、size_tはunsigned型なので、負数との比較で思わぬバグが発生することがあるためです。
size_t a = 1;
if(a - 2 < 0){
// 想定通りにならない場合がある
}
このように、符号なし整数は初心者には少し扱いが難しい部分があります。
実務では「用途」で型を選ぶ
C++では「負になる可能性があるか」で型を考えることが多いです。
| 用途 | よく使う型 |
|---|---|
| 一般的な整数 | int |
| サイズ・個数 | size_t |
| 大きな整数 | long long |
| 小数 | double |
例えば「距離」でも、将来的に差分計算で負になる可能性があるならintのほうが扱いやすい場合があります。
初心者におすすめの考え方
C++学習初期では、まず以下を意識すると理解しやすいです。
- 単純なら直接return
- 複雑なら途中変数
- 一般用途はまずint
- size_tはサイズ用途で覚える
最初から「完全に最適な型」を選ぼうとしすぎるより、コードの意味を理解することのほうが重要です。
実際によく見る書き方
実際のC++コードでは、次のような書き方をよく見かけます。
int calcDistance(){
return m_hour * m_speed;
}
また、サイズ取得ではsize_tがよく使われます。
std::vector<int> data;
for(size_t i = 0; i < data.size(); ++i){
// 処理
}
用途によって自然に使い分けられています。
まとめ
C++では、単純な計算結果を返すだけなら「return 直接計算」の書き方は非常に一般的です。一方で、デバッグや可読性を重視するなら途中変数を使うのも有効です。
またsize_tは便利な型ですが、主に「サイズ」や「配列添字」向けに使われることが多く、初心者段階ではまずint中心で学習しても問題ありません。
大切なのは、「なぜその型を使うのか」「なぜその書き方にするのか」を少しずつ理解していくことです。C++は奥が深い言語ですが、こうした疑問を一つずつ整理していくことで着実に理解が深まっていきます。


コメント