2

これは直接的なコーディングの質問ではなく、特定のコードが含まれているわけではありません。それは、私が理解するのに苦労してきた一般的な質問です。

if文と有効性チェック/変数ガードチェックのif文の違いは何ですか?

これは、インストラクターが if ステートメントを使用せずに関数を作成するように指示したためです (有効性チェック/変数ガード チェックを除く)。それらの違いについて少し混乱しています。ありがとう!

4

4 に答える 4

2

違いはありません。1 種類のifステートメントしかありません。if条件は、ステートメントの特定の「タイプ」ではなく、プログラムの構造にあります。ifインストラクターは、「ガード」変数をチェックすることを除いて、不必要なステートメントを導入しないように要求しているため、 if.

于 2013-10-20T12:33:57.533 に答える
1

ステートメント自体に特定の違いはなく、そのステートメントを使用する目的のみが異なります。

入力パラメーターが仕様に対して有効であるかどうかを確認する条件を追加すると (たとえば、インデックスが負ではなく、配列の範囲内に収まるかどうか)、インストラクターは解決策を受け入れると言います。一方、関数の出力を計算するために条件を使用する場合、インストラクターはあなたのソリューションを受け入れられないと見なします。

C は、パラメーターの有効性を保証する別の方法、つまりassert機能を提供することに注意してください。明示的な はありませんifが、条件に違反するとプログラムが中断します。

void setArrayElementSafe(int *array, size_t size, size_t index, int newValue) {
    assert(index < size); // End the program if index is outside bounds
    array[index] = newValue;
}

プログラムが受け入れられるかどうかを確認する簡単なテストは、すべてifの s をasserts に置き換えることができるかどうかを確認することです (実際に行う必要はありません。コードを調べて、それが可能であることを確認してください)。

于 2013-10-20T12:35:46.310 に答える
1

ifコードからすべてのステートメントを削除でき、正しい入力を与えればコードは引き続き正しく機能する場合、インストラクターの規則に準拠することを意味します。言い換えれば、if許可されている唯一のステートメントは、前提条件と仮定をチェックするものですが、コードのアルゴリズム ロジックの一部ではありません。

于 2013-10-20T12:45:33.417 に答える
0

まったく違いはありません。ifステートメントは有効性チェックを目的としています。ifステートメントの型やクラスはありません。

于 2013-10-20T12:34:45.350 に答える