
C言語で教えていただきたいです。
これはコマンドライン入力に複数の整数値を入力すると,
入力した整数値の合計を計算するというプログラムなのですが、
各行がどんな働きをしているのか教えていただけますでしょうか??
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
int sum = 0;
for (int i = 0; i < argc; ++i)
sum += atoi(argv[i]);
printf("%d\n", sum);
return 0;
}
No.1ベストアンサー
- 回答日時:
#include <stdio.h>/* 標準入出力ライブラリをインクルード */
#include <stdlib.h>/* 標準ライブラリをインクルード */
int main(int argc, char** argv) {/* main関数を定義開始 */
int sum = 0;/* 変数を累積器(アキュムレータ)として初期値0で定義 */
for (int i = 0; i < argc; ++i) { /* カウンタiをコマンドライン引数の最大個数まで増やす */
sum += atoi(argv[i]); /* 累積器にコマンドライン引数を整数に変換しながら加算する */
}
printf("%d\n", sum); /* 累積器の中身を表示 */
return 0; /* 正常終了 */
}
注意点:
1. コマンドラインで受け取った引数(argv[i])は文字列。だからこういう場合は整数に変換しないとならない。
2. atoi関数は時代遅れ。なるたけstdlib.hに含まれるstrtol関数を用いた方が良い。
strtol:
http://www9.plala.or.jp/sgwr-t/lib/strtol.html
No.2
- 回答日時:
この後、真面目な回答が得られると思います。
私は、少し面白い質問だと思いましたので、少し変わった提案をします。
各1行だけ減らしてコンパイル・実行し、
コンパイルが通らない。あるいは実行動作の変化から、
削除した箇所の意味を見出す。というアプローチです。
これで意味が解らなくても、あまり思い詰める必要はありませんが、
決定的に動作の変わる行もあり、その発見による感動が、
より深い理解への切っ掛けになる事が割とよくあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
ストークスの定理(一般相対性...
-
5
C言語で三目並べをするプログラ...
-
6
比較回数と交換回数表示について
-
7
困ってます…nCrを求めるC言語...
-
8
C言語、行列の積を求めるプログ...
-
9
単語の出現回数を数え、出現回...
-
10
フィボナッチ数列 プログラミ...
-
11
C言語での引数の省略方法
-
12
if と配列の組み合わせ
-
13
アスタリスクで正方形
-
14
フィボナッチ数列
-
15
ポインタの型変換、どうやるん...
-
16
シグマ公式・・・C言語
-
17
足して100になるような乱数のア...
-
18
複数桁10進数の*桁目だけを抽出...
-
19
C pointer? or...
-
20
クイックソートの交換回数
おすすめ情報
公式facebook
公式twitter