2011-04-20 10 views
1

이 while 루프를 수정하려고하지만 오류가 계속 발생합니다. 근본적으로 나는 4 마리의 거북이를 가지고있다. 나는 팔리는 모든 거북이를 위해 동전을 얻는다. 내가 0에 이르면 내가 가지고있는 동전의 수를 인쇄하고 싶습니다.C : while 루프 문제

while (turtles > 0) { 
turtles = turtles - 1; 
coin++; 
if (turtles = 0) 
printf("Now you have %d coins\n", coin); 
} 

답변

5

컴파일러에서 오류가 발생했기 때문에 기쁩니다.

당신은 귀하의 경우 상태 turtles- 0을 할당됩니다

if (turtles = 0) 

나는 그것이 0에 동일한 경우는 그 다음 두 대신 어떤지 == 동일해야 테스트하려는 가정합니다.

if (turtles == 0) 
+0

embarassing :(감사합니다. 하하 – yoshyosh

+0

왜 경고가 아닌 컴파일러 오류입니까? –

+0

@ 기계적 : 나는 단지 조건으로 혼자만의 작업을하는 것은 거의 항상 오류라고 추측 할 수 있습니다. 경로를 선택하고 사용자가 무엇을하는지 정확히 알 수 있도록했습니다.할당 주위에 괄호가 필요하기 때문에 사용자는 비교를 오해하지 않고 할당을 결정했습니다. 그것은 내 책에서 좋은 것입니다. –

2
: *** [센트] 오류 여기에 1

코드입니다 : 점점 오류 메신저이 진리 값 메이크업으로 사용 할당 주위

오류 괄호가

if 문은 다음과 같아야합니다.

if(turtles == 0) 

현재, 과제가 포함되어있어 오류가 발생합니다.

동전이 while 루프에 범위가 표시되지 않으므로 while 루프가 종료 된 후에 인쇄 라인을 넣는 것이 좋습니다. 거북이가 코드 블록 시작 부분에서 항상 양수가된다면 while 루프의 종료 절은 종료시 거북이가 0이라는 의미이므로 if 문은 필요하지 않습니다.

if 문 (예 : -1에서 시작하기 때문에 거북이가 필요할 수 있음)이 필요한 경우 if 절을 while 절에서 이동하면 평가에서 성능이 약간 향상 될 수 있습니다. 루프 반복마다 수행해야합니다. 특정한 경우, 반복 횟수가 적 으면 영향이 미미하지만 (컴파일러가이를 최적화 할 수도 있음), 향후 고려해야 할 사항입니다.

while (turtles > 0) { 
    turtles = turtles - 1; 
    coin++; 
} 
if (turtles == 0) // not needed if turtles is unsigned 
    printf("Now you have %d coins\n", coin); 
2
if (turtles = 0) 
    printf("Now you have %d coins\n", coin); 

할당 연산자는 항상 turtles에 0을 할당합니다. 결과는 부울 값 (즉, false (이 경우))이되며 인쇄 된 문자열은 절대 가져 오지 않습니다.

당신이 의미 한 바는 if (turtles == 0)이며 if (turtles = 0)이 아닙니다.

2

if 조건에 문제가 있다고 생각합니다. 당신이 진술 한 상태는 어쨌든 잘못되었습니다. 이 있어야한다 :

if (turtles == 0) 

너의 단순히 거북이에 0을 할당합니다.