찾다

 >  Q&A  >  본문

c++ - 关于C语言块作用域于for循环,本人小白

请问如下代码:
for(int i = 1;i <= 5;i++)
{

 i = i;

}

其中定义的i属于块作用域吗?i的作用域是?为啥我在某些编译器能过,有些就不能过呢?求教大神

迷茫迷茫2803일 전562

모든 응답(4)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-17 15:28:03

    이 구문은 표준 구문이 아니며 모든 컴파일러가 이 문장을 컴파일할 수 있다는 보장은 없지만 컴파일할 수 있다면 i는 블록 범위에 속합니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 15:28:03

    컴파일러 문제여야 합니다. VS2010은 c90 표준을 사용할 수 있습니다. C90에서는 int i=0을 직접 선언하는 것을 허용하지 않습니다. Int i는 프로그램 시작 부분에 선언되어야 합니다. C99는 이와 같은 쓰기를 지원합니다. 컴파일에 실패하면 이것이 문제일 수 있습니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 15:28:03

    gcc 컴파일러에서 C 언어는 호출되기 전에 먼저 명령문을 정의해야 합니다. mingw 컴파일러는 코드 중간 어디에서나 변수를 선언할 수 있습니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 15:28:03

    비표준 구문, 컴파일러가 다르고 결과가 균일하지 않습니다. 그러나 이 질문은 루프 본문에서 루프 변수를 수정하는 것은 프로그래밍 표준에 위배됩니다.

    회신하다
    0
  • 취소회신하다