void mul()
{
int x,y,sum = 0;
scanf("%d",&x);
scanf("%d",&y);
while (x != 0){
if (x%2 != 0)
sum = sum + y;
x = x/2;
y = 2*y;
}
printf("%d",sum);
}
int main()
{
char c;
printf("Enter two numbers and y to exit");
//mul();
scanf("%c",&c);
while (c != 'y'){
mul();
}
return 0;
}
이 프로그램을 실행하면 'y'입력이 종료되지 않습니다. 왜?여기 논리 오류가 있습니까?
당신은'scanf와()'의 정수를 읽는 것은'는 scanf를 위해 뒤에 줄 바꿈을 떠나하는 문제로 실행됩니다()'처리하는 문자를 읽고. 읽은 데이터를 인쇄하여 디버깅해야하므로 프로그램이 입력으로 처리한다고 생각하는 정보를 얻고 있는지 여부를 알 수 있습니다. 또한'scanf()'의 반환 값을 테스트해야한다. 초기 EOF가 있거나 숫자 데이터를 예상 할 때 숫자가 아닌 데이터가 있으면 이상한 행동을하게됩니다. –