2012-09-24 3 views
0

이것은 12 시간 형식의 입력을 받고 24 시간 형식으로 출력을 제공하는 프로그램을 작성하라는 책 문제를 해결하는 동안 생각해 낸 코드입니다. 11P, 1시 11분 오후 1 : 11P, 1시 11분 오후 1:11 P, 1:11 PM, 1:11 P 여기이 C 프로그램이 작동하는 이유는 무엇입니까?

는 IS

유효한 입력은 예를 들어, 1:11 PM, 일이 코드 : 내가 쓴 경우 상태에서

#include<stdio.h> 

int main (void) 
{ 
int hr=0,min=0; char time; 


scanf("%d : %d %c", &hr, &min, &time); 

if(time =='p' || time == 'P' || time == 'PM' || time == 'pm' && hr >= 12) 
{ 
    hr +=12; 
} 

printf("The 24 hour format time is = %d : %d", hr, min); 


printf("% Test result = c", test); 

return 0; 
} 

:

if(time =='p' || time == 'P' || time == 'PM' || time == 'pm' && hr >= 12) 

지금까지 내가 문자를 알고 타입 만 1 개 문자를 저장할 수있다. 그런데 왜 내가 9:11 PM과 같은 입력을 할 때 이것이 작동합니까? 이 상태에서 어떻게 작동 했습니까?

time == 'pm' || time == 'PM' 

는 출력했다 :

The 24 hour format time is =21:11 

편집 1 :

GNU GCC 컴파일러를 사용한다. 코드는 프로젝트가 아닌 단일 파일에 있습니다.

+0

어떤 컴파일러를 사용하고 있습니까? 어떤 시스템을 컴파일하고 있습니까? (크로스 컴파일 할 때 호스트와 타겟이 다를 수 있습니다)? 어떤 옵션을 제공합니까? 모든 경고 및 디버그 정보를 활성화 했습니까? –

+1

컴파일 경고를 사용하는 것을 잊었습니다. 그렇게했다면 컴파일러는 "다중 문자 상수"를 사용하려고한다는 경고를했을 것입니다. – pmg

+1

가능한 여러 개의 문자를 사용할 때 C++에서 작은 따옴표는 무엇을 할 수 있습니까?] (http://stackoverflow.com/questions/7459939/what-do-single-quotes-do-in-c-when-used- on-multiple-characters) – pb2q

답변

4

경고 메시지가 표시되지 않더라도 time == 'P'이라는 조건이 true로 평가되면 작업이 완료된 것입니다.

()에 모두 또는을 포함해야합니다. 그렇지 않으면 >= 12도 확인되지 않습니다. 예 :

((time =='p' || time == 'P') && hr >= 12) 
+0

thanx for (.........) : 디 –

관련 문제