2011-11-12 3 views
1

이 코드를 실행하면 반복되지만 "대답은 10입니다."라는 대답은 "대답은 0"입니다.대답이 잘못되었습니다.

왜 이런가요?

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) 
{ 
    int i; 
    for (int i = 0; i < 12; i++){ 
     if (i % 3 == 0) { 
      continue; 
     } 
     printf("Checking i = %d\n", i); 
     if (i + 90 == i * i) { 
      break; 
     } 
    } 
    printf("The answer is %d.\n", i); 
    return 0; 


} 
+2

'# import'처럼해야 루프,

루프 위해 내부를 선언하지 않는 외부 I을 사용하려면? – Vlad

답변

5

, 내부 하나는 외부를 숨기기 :와 것을

Repace. 또한 print 문은 정의되지 않은 동작을 발생시킵니다. 이는 외부 i이 초기화되지 않은 채로 읽혀지기 때문입니다.

새 변수를 선언하는 대신 외부 변수를 사용하려면 for (i = 0; i < 12; i++)을 입력하십시오.

+0

초기화되지 않은 변수 + UB를 언급하는 경우 +1 – Vlad

+0

효과가있었습니다. 설명 주셔서 감사합니다! – pdenlinger

8
int i; 
for (int i = 0; i < 12; i++){ 
     ^^^^^ 

루프 내부 루프 i 외부 i 동일하지 않다. 당신은 당신의 코드에서 두 개의 i의이

int i; 
for (i = 0; i < 12; i++){ 
1

실제로는 for 루프 안에 i을 다시 선언하고 있습니다. 과 같이 루프에 대한 귀하의 확인 : 당신은 루프를 종료하면

for (i = 0; i < 12; i++)

다음에, 그 값을 유지합니다.

0

두 코드가 코드에 int i으로 선언되어 있습니다.

0

당신은 그래서 루프는 C에서

for (i = 0; i < 12; i++) 
관련 문제