请问如下代码:
for(int i = 1;i <= 5;i++)
{
i = i;
}
其中定义的i属于块作用域吗?i的作用域是?为啥我在某些编译器能过,有些就不能过呢?求教大神
高洛峰2017-04-17 15:28:03
この構文は標準構文ではなく、すべてのコンパイラがこの文をコンパイルできるという保証はありませんが、コンパイルできれば、i はブロック スコープに属します。
高洛峰2017-04-17 15:28:03
これはコンパイラの問題です。VS2010 では c90 標準が使用されているため、for で int i=0 を直接宣言することができません。 C99 はこのような書き込みをサポートしています。コンパイルに失敗した場合は、これが問題である可能性があります。
高洛峰2017-04-17 15:28:03
gcc コンパイラーでは、C 言語はステートメントを呼び出す前にまずステートメントを定義する必要があります。mingw コンパイラーはコードの途中で変数を宣言できます。
高洛峰2017-04-17 15:28:03
非標準の構文、コンパイラが異なり、結果が均一ではありません。ただし、この質問は、ループ本体内のループ変数を変更することはプログラミング標準に違反します。