2012-12-12 4 views
0

나는 나의 대학 과정을 위해 C로 응용을 쓴다. 내 응용 프로그램의 한 섹션에서 나는 정수를 반복적으로 증가시킨다. printf 문을 사용하면 int1은 20으로 증가하지만 실행이 실패 할 수 있음을 알 수 있습니다. 왜 이것이 사실인지 알고 싶습니다.루프를 사용하여 정수를 더하는 것

int1 = (int2 + 2); 

컴파일러가 먼저 처리되는 '동일'변수되는 보장 할 수로서 정의되지 않은 동작은 :

int main() { 
    int i,int1=0, int2=0; 
    for (i = 0; i<10; i++) { 
     int1 = (int2 + 2); 
     int2 = int1; 
    } 
} 

프로그램 I를 사용하여한다고 생각되는 ANSI C 인라인 가공에 의하여한다. (제발 내가 틀렸을 경우 정정 해주세요!) 그래서 나는 더 긴 길을 택했지만 응용 프로그램은 어느 쪽이든을 사용하여 동일하게 실패합니다.

이것이 실패하는 이유는 무엇입니까?

+0

"실행에 실패했습니다."그 의미는 무엇입니까? – phant0m

+0

제 컴파일러에서 빌드가 성공적이라고 말합니다. 응용 프로그램이 실행될 때 RUN FAILED (종료 값 3, 총 시간 : 292ms)라고 표시됩니다. 루프 뒤에 printf 문을 포함하면 값이 20임을 알리고 같은 것을 말합니다. – DanMc

+0

return 0을 추가해보십시오. 결국. 또한 기본 args 값이 없습니다. – nycynik

답변

5

이 실패하지 않습니다 프로그램, 당신은 단순히 당신의 프로그램이 제대로 실행을 나타 내기 위해, 프로그램의 끝에서 return 0;에 잊고있다.

"정의되지 않은 동작": 아니요, 이것은 완전히 유효한 C 코드입니다.

+0

네, 맞습니다. 내 응용 프로그램의 문제는 다른 곳에서 발생해야합니다. 시간 낭비에 사과드립니다. – DanMc

+0

@DanMc 아무 문제가 없습니다. StackOverflow는 다른 사람의 시간을 낭비하지 않는 질문을 할 수있는 플랫폼입니다. 그 문제가 다른 곳에 있어야한다는 것을 어떻게 의미합니까? 프로그램에 다른 문제가있는 경우 [** 다른 질문하기 **] (http://stackoverflow.com/questions/ask)에 오신 것을 환영합니다. – phant0m

1

당신은

int1 = (int2 + 2); 

하지

int1 = (int1 + 2); 
+0

그건 오타였습니다. 나는 그것을 편집 할 것입니다. – DanMc

3

귀하의 코드가 잘 ...하지만 "실패"코멘트에 관해서 보인다 (및 실행) :

int main() 
:

In my compiler I am told that the build is successful, when the application then runs it says RUN FAILED (exit value 3, total time: 292ms

당신의 프로그램은 값을 반환하도록되어

"나는 main이라는 함수입니다. 매개 변수를 사용하지 않고 int를 반환합니다"라고 말하지만 프로그램은 아무 것도 반환하지 않습니다. return 문을 추가해보십시오.

int main() { 
    int i,int1=0, int2=0; 
    for (i = 0; i<10; i++) { 
     int1 = (int2 + 2); 
     int2 = int1; 
    } 
    return 0; // Note: a '0' return is normally success 
} 
+0

신속하게 응용 프로그램에서 코드 조각을 꺼내서 단순화하고 실행하는 주요 기능에 넣으려고했습니다. 그 일을하면서 나는 return statement를 잊어 버렸습니다, 죄송합니다 :)! – DanMc

관련 문제