2016-07-03 2 views
-3

이렇게 설명하는 방법을 모르겠습니다. 저는 C++ 초보자입니다. 누군가 제게 설명해 주시면 고맙겠습니다. 나는 float x, y 대신 float y, x을 작성했으며 프로그램은 정상적으로 작동했습니다. 컴파일러는 오류를보고하지 않았지만 프로그램은 지시 한대로 처리하지 않았습니다. 그것은 전체 'while'루프를 무시하고 끝까지 곧장 갔다. 나는 x와 y의 위치를 ​​바꿈으로써 그것을 고쳤다. 그러나 x, y의 위치가 왜 달라 지 느냐??C++ float를 사용하는 동안 x, y의 위치가 중요한 이유는 무엇입니까?

 #include <cstdlib> 
     #include <iostream> 

     using namespace std; 

     int main() 
     { 

     float x,y; /*This is the problem. Why does float y,x make a difference?*/ 

     int s=0; 
     int s1=0; 
     int max=0; 


     cout<<"Unesi stanje racuna:"<<endl; 
     cin>>y; 


     while(x!=0) 
     { 

        cout<<"Unesi vrijednost:"<<endl; 
        cin>>x; 

        max==x; 


        if (x>0) s=s+x; 
        if (x<0) s1=s1+x; 
        if(x>max) max=x; 
     } 


     cout<<"suma pozitivnih :"<<s<<endl; 
     cout<<"suma negativnih :"<<s1<<endl; 
     cout<<"najveci unos je :"<<max<<endl; 
     cout<<"ukupno stanje je: "<<s+s1+y<<endl; 

     return 0; } 
+4

초기화되지 않은 변수를 사용하면 정의되지 않은 동작으로 이어집니다. –

+1

선언의 순서는 차이가 없습니다. * 차이점은 * 초기화되지 않은 변수를 사용하는 것입니다. 'x'에 값을 할당하는 것을 잊었습니다. (또한 부동 소수점 값을 평등하게 비교하면 안됩니다. 실망하게 될 것입니다.) –

+1

@CodyGray 입력 값에 y 값을 할당했다고 생각합니다. – Li357

답변

4

위치는 전혀 중요하지 않습니다. float x, y;float y, x;과 같습니다. 여기서 중요한 점은 프로그램이 잘못 구성되어 출력에 의존 할 수 없다는 것입니다. x != 0을 확인했지만 x가 초기화되지 않았습니다. 이는 정의되지 않은 동작입니다. 아마도 y != 0을 의미했을 것입니다.

0

while 루프에서 비교를 사용하기 전에 x 및 y 변수를 모두 초기화해야합니다. 그렇지 않으면 작동하는 경우 그냥 임의적입니다.

또한 (0.0 대신 0) float 값으로 플로트 변수를 비교해야

관련 문제