教えて優しい人!

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ひで

教えて優しい人!

#1

投稿記事 by ひで » 15年前

以下のプログラム(成功している)で、int iを2回使っているのに、2回目のiの増減で最初のfor内が実行されないのはどうしてでしょうか??

#include <iostream>
#include <fstream>
using namespace std;

main(){
char n[5][100];
int p[5];
double a[5];
ifstream pref;

pref.open("prefecture.txt");
pref.width(100);
for(int i=0;i<5;i++){ ←ここです!
pref>>n;
pref>>p;
pref>>a;
}
pref.close();
for(int i=0;i<5;i++){
cout<<n<<","<<p<<","<<a<<"\n";
}
}

box

Re:教えて優しい人!

#2

投稿記事 by box » 15年前

> int iを2回使っているのに、2回目のiの増減で最初のfor内が実行されないのはどうしてでしょうか??

そのプログラムは、
open
width
iによる5回のループ(1回目)
close
iによる5回のループ(2回目)
を上から順に実行している、ということはわかりますか?
画像

softya

Re:教えて優しい人!

#3

投稿記事 by softya » 15年前

まず、変数のスコープを理解して下さい。
for(int i=0;i<5;i++){
こうやって宣言された変数iはforループ内しか有効ではありません。
なので2番目のforループの変数iとは名前が一緒でもC++にとっては別変数です。

>以下のプログラム(成功している)で、int iを2回使っているのに、2回目のiの増減で最初のfor内が実行されないのはどうしてでしょうか??

これの意味が良く分からないのですが、プログラムの実行順序と言うのが良く分かっていないって事でしょうか?
特殊なものを除いて、プログラム言語は逐次実行と言って上から順に命令が実行されていきますので2つのforループが同時に実行されることなどありえません。つまり、1つ目のforループが終了しない限り2つめのforループは実行されませんし2つめのループ中に1つ目のループに戻ることはありません。

ひで

Re:教えて優しい人!

#4

投稿記事 by ひで » 15年前

boxさん

ご返信ありがとうございます!!
大丈夫です!それは一応わかります。


softyaさん

ご返信ありがとうございます!!
成る程!スコープ内(?)の変数宣言はその変数内でしか適用されないのですね!!
それと逐次実行ですね!覚えておきます!ありがとうございます!



解決しました。
御二方、本当にありがとうございます。

Ma

Re:教えて優しい人!

#5

投稿記事 by Ma » 15年前

もう解決してしまったみたいですが。
>成る程!スコープ内(?)の変数宣言はその変数内でしか適用されないのですね!!
間違ってますよ。

スコープ内で宣言した変数はそのスコープ内でしか使えないって意味ですよ。

{
int a = 2;

}
としたら、{} の中がスコープで、その外側ではaは参照(使えない)できないということです。
画像

ひで

Re:教えて優しい人!

#6

投稿記事 by ひで » 15年前

Maさん

成る程、そうなんですね!
まだまだ勉強しないと!
ありがとうございます!

閉鎖

“C言語何でも質問掲示板” へ戻る