これは直接的なコーディングの質問ではなく、特定のコードが含まれているわけではありません。それは、私が理解するのに苦労してきた一般的な質問です。
if文と有効性チェック/変数ガードチェックのif文の違いは何ですか?
これは、インストラクターが if ステートメントを使用せずに関数を作成するように指示したためです (有効性チェック/変数ガード チェックを除く)。それらの違いについて少し混乱しています。ありがとう!
これは直接的なコーディングの質問ではなく、特定のコードが含まれているわけではありません。それは、私が理解するのに苦労してきた一般的な質問です。
if文と有効性チェック/変数ガードチェックのif文の違いは何ですか?
これは、インストラクターが if ステートメントを使用せずに関数を作成するように指示したためです (有効性チェック/変数ガード チェックを除く)。それらの違いについて少し混乱しています。ありがとう!
違いはありません。1 種類のif
ステートメントしかありません。if
条件は、ステートメントの特定の「タイプ」ではなく、プログラムの構造にあります。if
インストラクターは、「ガード」変数をチェックすることを除いて、不必要なステートメントを導入しないように要求しているため、 if
.
ステートメント自体に特定の違いはなく、そのステートメントを使用する目的のみが異なります。
入力パラメーターが仕様に対して有効であるかどうかを確認する条件を追加すると (たとえば、インデックスが負ではなく、配列の範囲内に収まるかどうか)、インストラクターは解決策を受け入れると言います。一方、関数の出力を計算するために条件を使用する場合、インストラクターはあなたのソリューションを受け入れられないと見なします。
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 をassert
s に置き換えることができるかどうかを確認することです (実際に行う必要はありません。コードを調べて、それが可能であることを確認してください)。
if
コードからすべてのステートメントを削除でき、正しい入力を与えればコードは引き続き正しく機能する場合、インストラクターの規則に準拠することを意味します。言い換えれば、if
許可されている唯一のステートメントは、前提条件と仮定をチェックするものですが、コードのアルゴリズム ロジックの一部ではありません。
まったく違いはありません。if
ステートメントは有効性チェックを目的としています。if
ステートメントの型やクラスはありません。