私はこのC++の関数が何をするのかを理解し、私はreturn
文はこのよう書かれている理由を理解していない:このリターンステートメントでこのコンマを使用する理由は何ですか?
int intDivide(int num, int denom){
return assert(denom!=0), num/denom;
}
が一つだけ;
があるので、ステートメントが1つだけ、ここですが、カンマが私を混乱させる。なぜ書かないのですか:
int intDivide(int num, int denom){
assert(denom!=0);
return num/denom;
}
最初のバージョンでは、「エレガンス」とは何かがありますか?
カンマはとにかく何をしているのですか?基本的に上記の2つのバージョンが同一であるように、1つのステートメントを2つの部分に分割しますか?
これは有効な構文ではありません。それは私が意図的にやり遂げることを避ける(あなたの期待通りに動作すると仮定して)奇妙なもののように見えます。 – byxor
組み込みコンマは、各式を評価し、最後の式の結果を返します(つまり、評価する式が過負荷になっていないと仮定すると、すべての地獄が緩んでしまう)。どのように移植性が高いのか分かりません。なぜなら、assertマクロが何を定義するかに大きく依存するからです。 – StoryTeller
私が考えることができる最初のスニペットのように書かなければならない唯一の正当な理由は、C++ 11の 'constexpr'です。 –