C言語について。 以下の画像において、return 1 は何を表しているのでしょうか。
C言語について。 以下の画像において、return 1 は何を表しているのでしょうか。 説明の中では「この関数で配列内の要素を比較することができる」とされているのですが、正直全然理解できていません。 詳しい方よろしくお願い致します。
ベストアンサー
写真のcomp関数ですが、配列arrayのpos_a要素目とpos_b要素目を比較してその結果をif文で判定し、1又は0を返す仕様です。 使用例を以下に示しますが、comp関数の戻り値が1であるのか0であるのかによって、後の処理を変えるために使っているというわけです。 1と0を戻していることから、1をTRUE、0をFALSEとして、if文での真・否判定で使うということが考えられます。 【使用例】 int comp(int array[], int pos_a, int pos_b) { if (array[pos_a] < array[pos_b]) { return 1; } return 0; } int main() { int x[] = { 1,1,3 }; const int a = 0; const int b = 1; if (comp(x, a, b) == 1)//「if(comp(x,a,b))」と既述してもいいです。 printf("x[%d]の値は、x[%d]の値よりも小さいです。\n", a, b); else printf("x[%d]の値は、x[%d]の値よりも等しいか大きいです。\n", a, b); } 合せて、応用例を示します。 質問の関数では、0と1の戻り値でしたが、小さい場合、大きい場合、等しい場合で戻り値を変えることにより、呼び出し側の処理分岐を変えることができます。 【応用例】 #include <stdio.h> int comp(int array[], int pos_a, int pos_b) { if (array[pos_a] < array[pos_b]) return 1; else if (array[pos_a] == array[pos_b]) return 2; else return 0; } int main() { int x[] = { 1,1,3 }; const int a = 0; const int b = 1; const int r = comp(x, a, b); switch (r) { case 1:printf("compの戻り値は、「%d」でした。x[%d]の値は、x[%d]の値よりも小さいです。\n",r, a, b); break; case 2:printf("compの戻り値は、「%d」でした。x[%d]の値は、x[%d]の値と等しいです。\n",r, a, b); break; case 0:printf("compの戻り値は、「%d」でした。x[%d]の値は、x[%d]の値よりも大きいです。\n",r, a, b); break; default:break; } } int main() { int x[] = { 1,1,3 }; const int a = 0; const int b = 1; const int r = comp(x, a, b); if (r == 1) printf("x[%d]の値は、x[%d]の値よりも小さいです。\n", a, b); else printf("x[%d]の値は、x[%d]の値よりも等しいか大きいです。\n", a, b); }
質問者からのお礼コメント
とても分かりやすかったです! 助かりました。。本当にありがとうございました!
お礼日時:5/19 13:43