ここから本文です

この関数の定義はdoble f(int n,doble a[l]){ doble m: int i; m=a[0]; fo...

sus********さん

2012/7/1621:25:35

この関数の定義はdoble f(int n,doble a[l]){
doble m:
int i;
m=a[0];
for(i=1;i<n;i++){
if(m<a[i]) m=a[i];
}
return 0;
}です
double= x=0.0;
doble= b[4];
b[0]=-1.0;
b[1]=1.0;
b[2]=3.0;
x=f(1,b); というプログラ

ムを実行した後における変数xの値は何ですか? 理由もおねがいしまーす

閲覧数:
166
回答数:
3

違反報告

ベストアンサーに選ばれた回答

編集あり2012/7/1621:57:14

回答その1
実行できるプログラムではない。ので、xの値というもの自体存在しない。

回答その2
勝手に補完/修正して
double f(int n,double a[n]){ /* この記法はC99で可。Visual C++やBorland C++などANSI C準拠のコンパイラではエラー */
double m;
int i;
m=a[0];
for(i=1;i<n;i++){
if(m<a[i]) m=a[i];
}
return 0;
}
int main(void){
double x=0.0;
double b[4];
b[0]=-1.0;
b[1]=1.0;
b[2]=3.0;
x=f(1,b); /******/
return 0;
}

だったとして、
x=f(1,b); /******/
でxは0になる。だって、関数fはいつだって0を返すから。

回答その3
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1190798601
でちらと言ったけど、関数fの最後がreturn m;だったとしたら
x=f(1,b); /******/
でxは-1になる。理由...関数fの動作を追えば明らか。m=a[0]でmに-1が入ったあと、nは1なのでforループ内は実行されずそのままmすなわち-1が返されるから。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

wat********さん

2012/7/1720:31:41

別の可能性。
double f(int n,double a[]) が呼び出し側と別のソースファイルで定義されていて,
呼び出し以前にプロトタイプ宣言がなかった場合,
x にはでたらめな値が入っているかもしれません。

e16********さん

2012/7/1621:47:19

dobleとは 俺の事かと double言い、、、、、コンパイルエラーで実行出来ないので答は出ないのだけど、仮にコンパイルエラーを全部直したとして、、、、。

ざっと見たら分るよね。

答は x = 0

理由はf()が常に0を返すように書かれているから。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる