- ベストアンサー
C++の配列について
#include <iostream> using namespace std; int main() { float w[] = {1.2,2.3,3.4,4.5,5.6}; float x[] = {4.8,2.6,1.3,9.1,8.7}; float u = 0.0; int i; for(i=0;i<5;i=i++) { u += w[i] * x[i]; } cout << "u=" << u << "です\n"; return 0; } u=105.83って出たんですが、これは何をしているプログラムなんですか
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> これは何をしているプログラムなんですか u += w[i] * x[i]; と書かれている通り、2つの配列の各要素の積を合計したものを 出力するプログラムでしょう。 質問内容とは関係ないですが、 for文の第3パラメータ「i=i++」は、コンパイルエラーにも 動作エラーにもなりませんが、変なコーディングです。 「頭痛が痛い」と言っているような感じですね。
その他の回答 (2)
- titokani
- ベストアンサー率19% (341/1726)
回答No.3
i=i++は副作用完了点までにiの値を2回変更しているので、未定義動作ですよ。書いてはいけないコードです。
- ponzuinfo
- ベストアンサー率53% (16/30)
回答No.2
float w[] = {1.2,2.3,3.4,4.5,5.6}; float x[] = {4.8,2.6,1.3,9.1,8.7}; (1.2*4.8)+(2.3*2.6)+・・・+(5.6*8.7) をuに代入して表示するプログラムです ※i=i++はi=i+1でもおかしくはないですが forで1ずつ足すというのはi++にするのがポピュラーです for(i=0;i<5;i++)
補足
i=i+1でしたすみません。 それでも一緒ですか? あと、各要素の積の合計っていうのは1.2*4.8+2.3*2.6+…=みたいな感じですか?