[解決済み] return文に複数の値を含める必要があるのはなぜですか?
2022-02-15 09:36:15
質問内容
return文に複数の値を指定するケースを見たことがあります。 例えば
return 8, 10, 6;
私の知る限り、これらの値のうち実際に返されるのは1つだけです。 を使用する利点は何でしょうか?
return
このように
具体的には、宿題にこんな問題が出てきます。
という文言があります。
return 2 * 3 + 1, 1 + 5;
は値 ____ を返します。
必ず6を返すとわかっているのに、なぜこんな書き方をしたのだろう?
素朴な疑問ですが、お許しください。 私はまだプログラミングに多少慣れていないのです。
どのように解決するのですか?
ステートメント
return 2 * 3 + 1, 1 + 5;
は値を返します。
6
.
この仕掛けは カンマ演算子 をC++で作成しました。詳しくはこちらをご覧ください。 https://en.cppreference.com/w/cpp/language/operator_other
A カンマ演算子 は基本的にカンマで区切られた式のリストで、左から右へ評価され、最後の項目の結果は、全体の カンマ演算子 .
以下は、その方法を示す簡単な例です。 カンマ演算子 が動作します。
int foo() {
int i = 1;
return i += 2, i++, i + 5; // This is a comma operator with three items
// i += 2 will be evaluated first, then i == 3
// i++ will be evaluated second, then i == 4
// i + 5 will be evaluate last, and the result is 9
// the result of the last item is returned by the return statement
}
int main() {
std::cout << foo();
return 0;
}
このコードは9を表示します。
関連
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】識別子 "string "は未定義?
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)
-
[解決済み] 複数の値を返す関数から代入する方法は?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] <bits/stdc++.h> を #include しない方が良いのでしょうか?
-
[解決済み] if...else if文を確率で並べるとどのような効果がありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された