(Objective Cのコード)同じ変数名の変数スコープ?
int i=5;
{
int i=i;
NSLog(@"Inside Scope: %i",i);
}
NSLog(@"Outside Scope: %i",i);
プリント:
3385904(ごみ)を正しくint i= 10;
プリントでint i = i;
を交換
...(スコープのi
インサイド)
ような:直ちに
と、(単独で、このコード)
int i=i;
コンパイルが、セグメンテーション違反。
これらの構文はどのように有効ですか?どのようなものが使用されているのですか、それとも以前にキャッチされていたはずのコンパイラのバグですか?
新しいタイプの新しいスコープ内で同じ変数名を使用する必要がある場合、どのように区別しますか?
2つのループがある場合は、int i;
を2回再定義しているため、コンパイラが動揺してしまう可能性があるので、唯一の考えはfor() loop
です。
スペックは 'int i = i;'について何を言っているのか分かりませんが、明らかに無効です。しかし、 '{} 'の中に新しい' i'を定義することは完全に合法ですが、時には便利です(潜在的に混乱しやすく、バグがありがちですが)。 –
同じメソッド内の2つのスコープで同じ変数名を使用すると、コンパイラがエラーをスローするように設定することができます(または実際はデフォルトであることを望みます)。私はそれをしたくない。おそらくそのような旗があります...おっとそれは疑問です。 –